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