为什么我的oAuth签名最后需要“%26”?

时间:2012-05-10 07:34:31

标签: api oauth imgur

我正在使用imgur的API,需要设置oAuth身份验证。这很顺利,但我遇到了麻烦......

我无法获得oAuth request_token端点给我一个成功的消息,所以我联系了imgur开发者,他们给了我一个重要的信息。但是,我无法找到这些信息的来源。

我所说的信息是我的 oAuth签名。我知道oAuth签名只是我的 api_secret ,但是在imgur dev提供的工作代码中,最后标记了一个&符号。

这个&符号是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 documentation中的某个地方实际提到过?它总是一个&符号,还是只是一个奇怪的巧合?我不知道它来自哪里......

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

1 个答案:

答案 0 :(得分:3)

对于受保护的OAuth请求,通常使用秘密(通常是共享密钥和授权令牌密钥)生成签名。你可能已经猜到了,用&符号(“&”)来分隔这两个秘密。但是,当使用单个秘密作为签名时(与imgur一样),仍然需要&符号,但由于没有第二个分隔符号,因此&符号出现在字符串的末尾。想到它的另一种方法是&符号分离api_secret和一个空洞的秘密。