我正在尝试创建一个基于 ruby 的 Twitter 客户端,我可以在其中使用 ruby 从命令行发布我的状态。我现在正试图理解 oauth,这让我有点困惑。如果我正在构建 Web 应用程序,我可以在请求 token 完成时提供回调 URL。我将如何从命令行执行此操作?我不希望 ruby 打印出授权并复制并粘贴 url,然后单击“允许”以获取 token 。我发现了一些关于带外交换或 PIN 的信息。我如何使用 ruby 中的 OAuth 库做到这一点,非常感谢。
最佳答案
要使用回调 url 机制,您的应用程序应该是一个 web 应用程序
。您似乎正在开发桌面应用程序
,如果是这种情况,您应该通过提供“oob”的oauth_callback_url
来遵循“PIN 码”流程(带外)当您请求 token 时。像这样,
https://api.twitter.com/oauth/request_token?oauth_callback=oob
如果你正确地设置了这个 HTTP 请求的 header (设置 HTTP header 是 OAuth 的关键部分,我想你已经知道如何做到这一点),Twitter 会给出 oauth_token
, oauth_token_secret
和 oauth_verifier
。我们称此 token 为 “request_token”
。稍后您需要它来获取 "access_token"
。
一旦你有了request_token
,你需要用下面的url打开网页
http://api.twitter.com/oauth/authorize?oauth_token=request_token
这将打开授权页面并让用户决定是否允许您的应用程序访问他或她的 Twitter 帐户。如果用户说可以,那么 Twitter 会提供 PIN 码。您需要允许用户输入 PIN 码,以便您可以保存它。
现在,是时候使用您的 comsumer_key/secret
、request_token
和 获取另一个 token (
。您应该正确设置所有这些值的 header ,并使用此 url 再次执行 HTTP 请求,"access_token"
) PIN 码
如果 Twitter 接受你的“access_token”请求,它会给你 oauth_token
、oauth_token_secret
、user_id
和 screen_name
。我们称此 token 为 “access_token”
。现在,您可以使用 access_token
和 its secret (oauth_token_secret)
执行任何 OAuth 所需的 Twitter API。您可以将这两个值保存在一个文件中,并在需要访问用户的 Twitter 帐户时继续使用它们。这些值将始终有效,直到用户撤销对您的应用程序的访问权限。
我不了解 Ruby,但如果您知道如何在 Ruby 中使用自定义 header 执行 HTTP/HTTPS 请求(GET/POST),并且仔细遵循 Twitter API 文档,此 PIN 码流程应该可以正常工作。祝你好运!
关于Ruby 推特客户端,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5130324/