oAuth 节需要准确,按照http://dev.twitter.com/pages/auth#auth-request http://dev.twitter.com/pages/auth#auth-request- 我最终建造了一个授权:我可以先用curl检查该标题。
我使用非常有用的交互式请求检查器构建了它http://hueniverse.com/2008/10/beginners-guide-to-oauth-part-iv-signing-requests/ http://hueniverse.com/2008/10/beginners-guide-to-oauth-part-iv-signing-requests/
以下是受保护用户的好友 API 请求:
curl -v -H 'Authorization: OAuth realm="https://api.twitter.com/1/friends/ids.json", oauth_consumer_key="XXXXXXXXXXXXXXXX", oauth_token="XXXXXXXXXXXXXXXX", oauth_nonce="XXXXXXXXXXXXXXXX", oauth_timestamp="1300728665", oauth_signature_method="HMAC-SHA1", oauth_version="1.0", oauth_signature="XXXXXXXXXXXXXXXX%3D"' https://api.twitter.com/1/friends/ids.json?user_id=254723679
值得重申的是,正如您尝试做的那样,而不是通过例如设置授权标头jquery 的 beforeSend 函数,对于跨域 JSONP 请求(不能添加 HTTP 标头),您可以通过将所有相关键/值对放入 GET 请求来发出 oAuth 请求。这应该有望帮助其他各种提问者,例如
- 使用 jQuery.ajax 和 JSONP 设置标头? https://stackoverflow.com/questions/3073287/set-headers-with-jquery-ajax-and-jsonp
- 修改 JSONP 请求的 HTTP 标头 https://stackoverflow.com/questions/3350778/modify-http-headers-for-a-jsonp-request
- 仅使用 JQuery 更新 Twitter (OAuth) https://stackoverflow.com/questions/1769713/using-only-jquery-to-update-twitter-oauth
您的请求看起来有几个问题;它缺少用户的 oauth_token 加上 oauth_signature 看起来不像是经过 Base64 编码的(因为它分别缺少十六进制编码的 = 或 ==、%3 或 %3D%3D)。
这是使用 oAuth 编码的查询字符串参数的 GET 等效项,您可以在跨域 JSONP 调用中使用它:
https://api.twitter.com/1/friends/ids.json?user_id=254723679&realm;=https://api.twitter.com/1/friends/ids.json&oauth;_consumer_key=XXXXXXXXXXXXXXXX&oauth;_token=XXXXXXXXXXXXXXXX&oauth;_nonce=XXXXXXXXXXXXXXXX&oauth;_timestamp=1300728665&oauth;_signature_method=HMAC-SHA1&oauth;_version=1.0&oauth;_signature=XXXXXXXXXXXXXXXX%3D