繁体   English   中英

Twitter Oauth URL编码不一致?

[英]Twitter Oauth URL encoding inconsistencies?

我正在http://dev.twitter.com/pages/auth上阅读演练,但是在对回调URL进行编码时似乎不一致。 回调列为:
oauth_callback- http:// localhost:3005 / the_dance / process_callback?service_provider_id = 11

签名基本字符串列出为:
POST&... oauth_callback%3D http%253A%252F%252Flocalhost%253A3005%252Fthe_dance%252Fprocess_callback%253Fservice_provider_id%253D11 %26oauth_consumer_key%3D ...

回调似乎在这里是双重编码的。

签名的授权标头列出为:
OAuth oauth_nonce =“ QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqq”“,oauth_callback =” http%3A%2F%2Flocalhost%3A3005%2Fthe_dance%2Fprocess_callback%3Fservice_provider_id%3D11

在这里,回调似乎是单个URL编码的。 他们为什么不一致?

编码不是不一致的,URL只是在两种有两种不同需求的不同情况下使用。

该网址开始时未在您的应用中进行编码。 您发布的第二个示例是将作为标头传递到服务器的值,因此它必须经过URL编码(一次)。

签名的授权标头列出为:OAuth oauth_nonce =“ QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk”,oauth_callback =“ http%3A%2F%2Flocalhost%3A3005%2Fthe_dance%2Fprocess_provider%3,...

然后,必须将所有OAuth标头参数的值与其他必需的值组合以创建用于签名的基本字符串。 基本字符串是根据将值传递到服务器时创建的 因此,您要使用传递给服务器的值(已编码的URL),并将其与其他值(每个值必须进行URL编码)组合起来,以形成一个新字符串,并用&分隔。

您会看到为什么必须这样做,因为基本字符串的第三部分包含查询参数,这些查询参数的值已经过URL编码(如oauth_callback ),并使用&作为分隔符。 为了将此查询参数列表(包含& )安全地组合到基本字符串中(也使用&用作分隔符),必须在连接前再次对其进行URL编码。 此时, oauth_callback已被编码两次,一次被oauth_callback编码,一次被编码为较大组合值的一部分:

签名基本字符串列为:POST&... oauth_callback%3Dhttp%253A%252F%252Flocalhost%253A3005%252Fthe_dance%252Fprocess_callback%253Fservice_provider_id%253D11%26oauth_consumer_key%3D ...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM