Tom*_*ume 6 api twitter json oauth jqtouch
我有一个iPhone的Web应用程序,它最终将在PhoneGap应用程序中运行 - 但是现在我在Safari中运行它.
该应用程序需要访问Twitter朋友的推文,包括私人推文.所以我使用Scribe库实现了OAuth.我成功地将用户反弹到Twitter,让他们进行身份验证,然后反弹.
此时,Web应用程序具有oAuth凭据(密钥和令牌),它在本地持久存在.从这里开始,我希望用户使用Twitter状态/ user_timeline.json方法来获取特定用户的推文.我有使用JSONP请求的应用程序成功执行此操作与未受保护的推文; 当它访问私人Twitter提要的时间轴时,应用程序中会出现HTTP基本身份验证对话框.
我相信我需要向Twitter提供OAuth凭据,以便我的Web应用程序可以识别和验证自己.Twitter建议通过添加HTTP Authorization标头来实现,但由于我正在使用JSONP请求,我认为这不是我的选择.我是否正确地假设这个?
因此,我的选项似乎是将oAuth凭证作为查询字符串参数(Twitter建议反对,但文档建议仍然支持); 或通过中间服务器代理所有推文.我宁愿避开后者.
我使用表单的URL访问Twitter API
当user_id是公共用户时,这可以正常工作.当user_id是私人用户时,我会获得HTTP Basic Auth对话框.知道我做错了什么吗?我希望它像"忘记一个重要的参数"一样令人尴尬地简单......
oAuth 节需要准确,按照http://dev.twitter.com/pages/auth#auth-request - 我最终构建了一个Authorization:标头,我可以首先使用curl 检查该标头。
我使用http://hueniverse.com/2008/10/beginners-guide-to-oauth-part-iv-signing-requests/上非常有用的交互式请求检查器构建了它
以下是受保护用户的好友 API 请求:
卷曲 -v -H '授权:OAuth 领域 =“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="XXXXXXXXXXXXXXX%3D"' https://api.twitter.com/1/friends/ids.json?user_id=254723679
值得重申的是,正如您尝试做的那样,对于跨域 JSONP 请求(无法添加 HTTP 标头),您可以通过将所有内容放入 oAuth 请求,而不是通过 jquery 的 beforeSend 函数设置授权标头。 GET 请求中的相关键/值对。这应该有望帮助其他各种提问者,例如
您的请求看起来有几个问题;它缺少用户的 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
| 归档时间: |
|
| 查看次数: |
4914 次 |
| 最近记录: |