gpt4 book ai didi

php - 如何解决 OAuth 1.0 中的 "Invalid signature. Expected signature base string"

转载 作者:可可西里 更新时间:2023-11-01 12:59:24 24 4
gpt4 key购买 nike

我正在尝试使用 OAuth 从站点获取访问 token 和 secret 。请求 token 和请求 secret 的交换正常,但是当需要获取访问 token 时,我收到错误 “无效签名。预期的签名基本字符串。”

有没有人以前见过这个错误或者知道可能出了什么问题?这是我取回的数据(在 urldecode 之后):

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

最佳答案

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

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

  1. 将签名基础字符串生成为“方法(POST/GET/等)”&“你的目标的编码字符串”&“你的 oauth 参数的编码字符串(消费者 key 、随机数、签名方法、时间戳、 token 和版本”
  2. HMAC-SHA1 签名方法使用 client secret 和 token secret 这两个 secret 作为 HMAC-SHA1 算法 key 。为了构造 key ,每个 secret 都经过 UTF8 编码和 URL 编码,并使用“&”字符作为分隔符连接成一个字符串,即使其中一个 secret 为空也是如此。
  3. 将签名基础字符串作为 HMAC-SHA1 文本,并将串联的 secret 作为 key ,客户端生成签名。 HMAC-SHA1 算法将生成一个八位字节字符串作为结果。八位字节字符串必须使用“=”填充进行 base64 编码
  4. 使用“oauth_signature”参数将计算出的签名添加到请求中。当服务器验证签名时,此参数不包含在签名工作流程中,因为它不是客户端签名的签名基础字符串的一部分。当签名包含在 HTTP 请求中时,必须按照用于传输参数的方法的要求对其进行正确编码。

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

关于php - 如何解决 OAuth 1.0 中的 "Invalid signature. Expected signature base string",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6766776/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com