【发布时间】:2012-10-15 03:09:41
【问题描述】:
我正在努力实施 Oauth Api,我发现有一些事情我无法验证,如果有人能提供说明,我会很高兴。警告我可能会漫无目的,所以我会尝试用粗体标记我的问题。
根据 oauth 1.0 规范 https://www.rfc-editor.org/rfc/rfc5849,我相信 oauth 参数对签名进行百分比编码的方式与在线时不同。 3.6节https://www.rfc-editor.org/rfc/rfc5849#section-3.6 “它只用于构造签名基字符串和“授权”头域。”
RFC3986 https://www.rfc-editor.org/rfc/rfc3986 这似乎是正常请求中使用的百分比编码方案。但是我没有看到它给出任何类型的 'this' 映射到 'that' 所以我假设如果字符在保留列表中,则应该使用十六进制等效项。
' '(空格)在为签名编码时是 %20 的唯一区别吗? Oauth 规范引用了这一点,但老实说,我无法找到其他规格。如果有人能指出我提到的地方以及我可能如何误解它,那就太棒了。
其他空白字符应该是 %20 吗?规范中哪里提到了这一点?
传统的 UrlEncode 是否适用于表单正文和查询参数?
最后,我要验证一些示例输出。我试图展示 Oauth 签名编码字符和 Url 编码字符之间的区别。再一次,唯一的区别似乎是对 ' '、'*' 和 '~' 的处理
Char Oauth Url
* %2A *
~ ~ %7E
% %25 %25
! %21 %21
: %3A %3A
/ %2F %2F
= %3D %3D
& %26 %26
+ %2B %2B
%20 +
, %2C %2C
@ %40 %40
\r\n %0D%0A %0D%0A
\n %0A %0A
\r %0D %0D
" %22 %22
? %3F %3F
( %28 %28
) %29 %29
| %7C %7C
[ %5B %5B
] %5D %5D
【问题讨论】: