如何从 Web 应用程序访问仅限身份验证的 Twitter API 方法

2024-05-04

我有一个 iPhone 网络应用程序,它最终将在 PhoneGap 应用程序中运行 - 但现在我在 Safari 中运行它。

该应用程序需要访问 Twitter 好友的推文,包括私人推文。所以我使用 Scribe 库实现了 OAuth。我成功地将用户弹回 Twitter,让他们进行身份验证,然后弹回。

此时,Web 应用程序具有在本地保留的 oAuth 凭据(密钥和令牌)。从这里开始,我希望它使用 Twitter statuses/user_timeline.json 方法来抓取特定用户的推文。我的应用程序使用 JSONP 请求成功地对未受保护的推文执行此操作;当它访问私人 Twitter 源的时间线时,应用程序中会出现一个 HTTP 基本身份验证对话框。

我相信我需要向 Twitter 提供 OAuth 凭据,以便我的 Web 应用程序可以识别和验证自身。 Twitter 建议通过添加 HTTP 授权标头来实现此目的,但由于我使用 JSONP 进行请求,因此我认为这不适合我。我的假设正确吗?

因此,我的选择似乎是要么将 oAuth 凭据作为查询字符串参数(Twitter 建议不要这样做,但文档表明仍然支持);或通过中间服务器代理所有推文。我宁愿避免后者。

我使用以下形式的 URL 访问 Twitter API

当 user_id 是公共用户时,这可以正常工作。当 user_id 是私人用户时,我会看到 HTTP 基本身份验证对话框。知道我做错了什么吗?我希望这是一些令人尴尬的简单事情,比如“忘记一个重要的参数”......


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 请求。这应该有望帮助其他各种提问者,例如

  1. 使用 jQuery.ajax 和 JSONP 设置标头? https://stackoverflow.com/questions/3073287/set-headers-with-jquery-ajax-and-jsonp
  2. 修改 JSONP 请求的 HTTP 标头 https://stackoverflow.com/questions/3350778/modify-http-headers-for-a-jsonp-request
  3. 仅使用 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  
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何从 Web 应用程序访问仅限身份验证的 Twitter API 方法 的相关文章

随机推荐