Twitter 更新在 QML 中运行时返回 401 Unauthorized,但首次仅在桌面 Java 上运行
我正在 Qt Quick/QML 中实现 Twitter 帖子客户端,使用 Javascript 作为应用程序逻辑。
我已成功完成 oAuth 过程的第一步,并获得了 oAuth 令牌和密钥。
但是发送到 http://api.twitter.com/1/statuses/update.json
对我来说总是失败,返回 401 Unauthorized。
所有帖子都是使用 XMLHttpRequest
完成的,但还没有一个起作用。
我尝试在桌面 Java 程序中复制该场景(复制 Qt 应用程序中使用的相同授权标头和帖子正文),但结果很奇怪。第一次对任何 Twitter 应用程序进行此尝试时,帖子成功了,我的推文也通过了。该 Twitter 应用程序的后续尝试均会收到 401 未经授权。
如果我随后在 Qt 应用程序中为不同的 Twitter 应用程序生成一个授权后标头,并在 Java 程序中尝试,它也只能运行一次。
有人知道这里出了什么问题吗?
另一件事表明我做错了其他事情,我需要将 =
附加到我生成的复合签名密钥中以对基本字符串进行签名(我正在使用 此 JS SHA-1 实现)。任何知道为什么会这样的想法也将不胜感激!
I am implementing a twitter post client in Qt Quick/QML, using Javascript for app logic.
I have successfully completed the first steps of the oAuth procedure, and have obtained the oAuth token and secret.
But posts to http://api.twitter.com/1/statuses/update.json
are always failing for me, returning 401 Unauthorized.
All posts are being done using XMLHttpRequest
s, and none have worked yet.
I have tried to replicate the scenario in a desktop Java program (copying the same authorization header and post body used in the Qt app), with a strange result. The first time this is attempted for any Twitter app, the post is successful, and my tweet gets through. Subsequent attempts for that twitter app all get 401 Unauthorized.
If I then generate a post authorization header for a different Twitter app in my Qt app, and try that in the Java program, it too will work once only.
Has anybody any idea what's going wrong here?
One further thing that indicates I'm doing something else wrong is that I need to append =
to the composite signing keys I produce to sign the base strings (I'm using this JS SHA-1 implementation). Any idea of why that mgight be would be appreciated too!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
您是否为每个请求生成新的 OAuth 标头,或者是否在每个请求上重复使用相同的 OAuth 标头?
听起来您正在重复使用标头,这肯定会生成 401 错误。每个请求都需要新生成的 OAuth 标头。
Are you generating a new OAuth header for each request or are you reusing the same OAuth header on each request?
It sounds like you are reusing the header and that will definitely generate a 401 error. Each request requires a newly generated OAuth header.