あなたのアプリケーションフローが何であるかはわかりませんが、私は twitter アプリ経由でログインしており、これが私が行ったことです。※ このプロセスにより、ユーザーの access_token が得られるため、そのデータにアクセスできます
まず、 .app
を要求する twitter オブジェクトがあります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