Twitter Oauth URL编码不一致?

Twitter Oauth URL编码不一致?,twitter,oauth,url-encoding,Twitter,Oauth,Url Encoding,我正在阅读演练,但对回调URL的编码似乎不一致。回调的列表如下: oauth_回调 - 签名基字符串列为: POST&…oauth_回调%3Dhttp%253A%252F%252Flocalhost%253A3005%252FTU舞蹈%252F进程_回调%253F服务_提供者_id%253D11%26oauth_使用者_密钥%3D 这里的回调似乎是双重编码的 签名的授权标头列为: OAuth OAuth_nonce=“QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4Xl

我正在阅读演练,但对回调URL的编码似乎不一致。回调的列表如下:
oauth_回调 -

签名基字符串列为:
POST&…oauth_回调%3Dhttp%253A%252F%252Flocalhost%253A3005%252FTU舞蹈%252F进程_回调%253F服务_提供者_id%253D11%26oauth_使用者_密钥%3D

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

签名的授权标头列为:
OAuth OAuth_nonce=“QP70eNmVz8jvdPevU3oJD2AfF7R7odC2XJcn4XlZJqk”,OAuth_callback=“http%3A%2F%2F本地主机%3A3005%2F进程%2F进程%3f服务提供程序id%3D11”


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

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

URL在应用程序中以未编码开头。您发布的第二个示例是将作为头传递给服务器的值,因此它必须是URL编码的(仅此一次)

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

然后,必须将所有OAuth头参数的值与其他必需的值结合起来,以创建用于签名的基本字符串。基本字符串是从传递给服务器的值创建的。因此,您将获取要传递给服务器的值,即已编码的URL,并将其与其他值组合,每个值都必须是URL编码的,以形成一个由
&
分隔的新字符串

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

将列出签名基字符串 作为: POST&…oauth_回调%3Dhttp%253A%252F%252Flocalhost%253A3005%252FTU舞蹈%252F进程_回调%253F服务_提供者_id%253D11%26oauth_使用者_密钥%3D