【问题标题】:How to resolve "Invalid signature. Expected signature base string" in OAuth 1.0如何解决 OAuth 1.0 中的“无效签名。预期的签名基字符串”
【发布时间】:2016-09-20 08:42:17
【问题描述】:

我正在尝试使用 OAuth 从站点获取访问令牌和密钥。请求令牌和请求秘密的交换很顺利,但是当需要获取访问令牌时,我收到错误 "Invalid signature. Expected signature base string."

有没有人见过这个错误或者知道什么可能是错的?这是我返回的数据(在urldecode-ing 之后):

Invalid signature. Expected signature base string: POST 
https://www.readability.com/api/rest/v1/oauth/access_token 
oauth_consumer_key=my_consumer_key 
oauth_nonce=d9aff6a0011a633253c5ff9613c6833d79d52cbe 
oauth_signature_method=HMAC-SHA1 
oauth_timestamp=1311186899 
oauth_token=C8GF7D6ytPzQKdZVpy 
oauth_verifier=ncUV4tJSrS 
oauth_version=1.0 
signature=7jUuk6fsEL8XNYxVWcsfGXEreK0%3D 

【问题讨论】:

  • 你解决过这个问题吗?我刚刚遇到了同样的问题,但没有一个答案对我有帮助......

标签: php oauth urlencode


【解决方案1】:

正如@genesis 所述,正确获取签名密钥非常痛苦,但有相关文档,可在此链接http://oauth.net/core/1.0/#encoding_parameters 上查看。

经验法则是当您使用 HMAC-SHA1 时,

  1. 生成签名基本字符串为“方法(POST/GET/etc)”&“encoded-string-for-your-target”&“encoded-string-of-your-oauth-param(consumer key, nonce, signature方法、时间戳、令牌和版本"
  2. HMAC-SHA1 签名方法使用两个秘密客户端秘密和令牌秘密作为 HMAC-SHA1 算法密钥。为了构造密钥,每个密钥都经过 UTF8 编码和 URL 编码,并使用“&”字符作为分隔符连接成一个字符串,即使其中一个密钥为空。
  3. 使用作为 HMAC-SHA1 文本的签名基字符串和作为密钥的级联秘密,客户端生成签名。 HMAC-SHA1 算法将生成一个八位字节字符串作为结果。八位字节字符串必须使用 '=' 填充进行 base64 编码
  4. 使用“oauth_signature”参数将计算的签名添加到请求中。当签名由服务器验证时,此参数不包含在签名工作流中,因为它不是客户端签名的签名基本字符串的一部分。当签名包含在 HTTP 请求中时,必须按照用于传输参数的方法的要求对其进行正确编码。

来源:http://nouncer.com/oauth/authentication.html

【讨论】:

    【解决方案2】:

    你可以看看here,大约一周前有人问过。回应:

    完全正确地获取 OAuth 签名的东西总是一个巨大的痛苦。您应该努力确保您的库生成的基本字符串与服务器所期望的一样。一旦这是真的,你唯一可以搞砸的方法就是使用错误的键来 hmac。

    【讨论】:

    【解决方案3】:

    由于某种原因,我无法对答案发表评论,但要在上述答案的评论中回答您的问题,您可以使用 Oauth 游乐场查看 google 希望您的基本字符串是什么样的。 http://googlecodesamples.com/oauth_playground/index.php

    【讨论】:

    【解决方案4】:

    我知道这真的很老了,这可能一点帮助都没有,但我今天得到了这个,并用rawurlencode()而不是urlencode()为我修复了它。

    【讨论】:

      【解决方案5】:

      我最近在搜索 google 后遇到了 aouth 1.0 问题,我发现有人创建了一个为 oauth 生成签名的 Web 服务。它对我有用。链接是here。看看:)

      【讨论】:

      • 博客不在线怎么办?那么答案将不再可用。您应该在答案中包含实际答案,不要链接到它。
      • 博客已关闭
      猜你喜欢
      • 2015-05-23
      • 2016-08-20
      • 1970-01-01
      • 1970-01-01
      • 2020-10-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多