[英]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.