我不确定您的应用程序流程是什么,但我通过 twitter 应用程序登录,这就是我所做的。※ 这个过程给了我用户的 access_token,所以我可以访问它的数据
首先,我有一个 twitterapp
对象,它要求一个request_token
.
# defines app's consumer
consumer = OAuth::Consumer.new(consumer_key,
consumer_secret,
:site => 'https://api.twitter.com',
:authorize_path => '/oauth/authenticate',
:sign_in => true)
# get the request_token and pass my callback url
request_token = consumer.get_request_token({:oauth_callback => callback_url})
您需要以某种方式存储 request_token !request_token 将为您提供 access_token 但 .get_request_token() 每次都会生成不同的请求,因此您需要保留原始请求才能最终获得您的 access_token
# setting the src of the login button
link_to 'log via twitter', request_token.authorize_url
用户登录。
在 Twitter 中,您在 urloauth_token
和oauth_verifier
. 您会在用户登录之前取回之前创建的 request_token,并且由于每次访问都会获得不同的 request_token,因此您需要找到与回调响应匹配的 request_token
request_token = request_tokens.detect do |rt|
rt.token == oauth_token
end
# let's get the access_token
access_token = request_token.get_access_token(:oauth_verifier => oauth_verifier)
似乎 access_token 与您使用的应用程序相关联,因此您必须存储consumer_key
、consumer_secret
和access_token.token
access_token.secret
有关如何获取关注者人数的示例
json_http_response = access_token.get("http://api.twitter.com/1/users/show.json?user_id=#{twitter_account_id}"))
followers_count = JSON.parse(json_http_response.body)['followers_count']
稍后,如果您想取回 access_token ,您将能够这样做
access_token =
OAuth::AccessToken.from_hash(application_consumer, # the same as the very top
{:oauth_token => token, # access_token.token from above
:oauth_token_secret => secret})) # access_token.secret from above