【问题标题】:What's the use of the oauth_token_secret in Twitter OAuth?Twitter OAuth 中的 oauth_token_secret 有什么用?
【发布时间】:2012-06-17 23:29:51
【问题描述】:

我按照https://dev.twitter.com/docs/auth/implementing-sign-twitter 上的教程在我的主页上使用OAuth。一切正常,在最后一步之后我有一个oauth_token(在将其转换为访问令牌之后)和一个oauth_token_secret。现在我想在 Twitter 上发布一个新状态。所以我在这个页面https://dev.twitter.com/docs/auth/authorizing-request 上做了所有事情,这只是对/1/statuses/update.json 的发布请求。在那个页面上没有提到oauth_token_secret,所以我没有在我的请求中使用它,只是把oauth_token放进去。提交发布请求后,twitter 给了我状态码 401 Unauthorized。为什么?我必须在某处使用oauth_token_secret 吗?

【问题讨论】:

    标签: twitter oauth


    【解决方案1】:

    令牌秘密用于散列签名库。密码之类的东西。您不发送密码,而是使用它来计算服务发送给您的内容的安全哈希。您发送该安全哈希,然后服务根据您发送的请求检查该安全哈希。如果它们匹配,则您已获得授权。

    OAuth 规范中描述了血腥的细节,RFC 5849

    Twitter 使用 OAuth1.0a,但与该规范基本一致。

    这是相关的部分:

    https://www.rfc-editor.org/rfc/rfc5849#section-3.4.2

    【讨论】:

    • 好的,这就是我正在做的,但它不起作用。我的标头字段授权具有以下值:oauth_consumer_key、oauth_nonce、oauth_callback、oauth_signature_method、oauth_timestamp、oauth_version、oauth_token 和 oauth_signature。在这种情况下,oauth_token 不是 oauth_token_secret,而是我在请求 /oauth/access_token 后获得的访问令牌。对于 oauth_signature,键是 consumer_secret&oauth_token_secret(所有内容都已转义),文本包含上面列出的所有值,经过转义和排序。我的方法有什么问题吗?
    • 是的,好吧。 oauth 规范非常特殊,很少有偏差会导致“401 未经授权”,而没有任何问题的迹象。例如,sig base 需要对所有这些 oauth 元素进行排序。并且:密钥的组成部分需要进行urlencoded,而不是它们之间的&符号。此外,编码不符合 HTTP 规范,但必须使用 OAuth 特定的 url 编码(仅限大写等)。然后你采用 that 的 ascii 编码。签名方法必须是HMAC-SHA1(我认为)。很多细节,很容易弄错一件事。难以诊断。
    • ps:您最初的问题,我必须在某处使用 oauth_token_secret 吗? 让我觉得您还没有真正理解 Twitter 的 oauth 是如何工作的。它可能需要您返回并仔细查看文档和您的代码。
    • 好的,就是这样。我忘记将状态消息放入签名库。现在一切正常。感谢您的帮助!
    猜你喜欢
    • 2010-12-31
    • 2011-11-14
    • 2011-04-19
    • 1970-01-01
    • 1970-01-01
    • 2014-06-20
    • 1970-01-01
    • 1970-01-01
    • 2010-11-16
    相关资源
    最近更新 更多