1

我正在使用 imgur 的 API,需要设置 oAuth 身份验证。进展很顺利,但我遇到了障碍......

我无法让 oAuth request_token 端点向我发送成功消息,因此我联系了 imgur 开发人员,他们给了我一条关键信息。但是,我找不到这些信息的来源。

我所说的信息是我的oAuth 签名。我知道 oAuth 签名只是我的api_secret,但是在 imgur 开发人员提供的工作代码中,最后有一个 & 标记。

这个 & 符号是 URL 编码的,两次。它从&%26,然后到%2526

API Secret        => 7fc6ff69*snip*c4016e7f99e076 // This does not work by itself
[oauth_signature] => 7fc6ff69*snip*c4016e7f99e076%2526 // Works
[oauth_signature] => 7fc6ff69*snip*c4016e7f99e076&  // This also works

为什么需要 & 符号?这是一个错误,还是在oAuth 1.0 文档中的某个地方确实提到过?它总是一个&符号,还是只是一个奇怪的巧合?我不知道它是从哪里来的...

编辑:值得一提的是 oauth_signature 是请求中的最后一个变量,所以它不应该与另一个变量合并。基本上,URL 的结尾必须以 & 符号(或 html 编码的版本)结尾。

4

1 回答 1

3

对于受保护的 OAuth 请求,签名通常是使用一秘密(通常是共享秘密和授权令牌秘密)生成的。正如您可能已经猜到的那样,与号(“&”)用于分隔这两个秘密。但是,当使用单个密钥作为签名时(与 imgur 一样),与号仍然是必需的,但是因为没有第二个密钥可以分开,所以与号出现在字符串的末尾。另一种思考方式是与号分隔 api_secret 和一个空的秘密。

于 2012-05-10T08:02:14.373 回答