簡體   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