Jnunemaker は彼の Twitter gem (https://github.com/jnunemaker/twitter) を更新し、Twitter::Oauth クラスを削除しました。私のコードは彼の例とあまり似ていないので、更新に問題があります。私のコードが twitter 0.9 gem で使用していたものは次のとおりです。
ユーザーコントローラー
def oauth
consumer = Twitter::OAuth.new('mykey','mysecret')
request_token = consumer.request_token
session[:request_token] = request_token.token
session[:request_token_secret] = request_token.secret
redirect_to 'http://api.twitter.com/oauth/authorize?oauth_token='+request_token.token
end
def callback
consumer = Twitter::OAuth.new('mykey','mysecret')
atoken, asecret = oauth.authorize_from_request(session[:request_token], session[:request_token_secret], params[:oauth_verifier])
consumer.authorize_from_access(atoken,asecret)
user = Twitter::Base.new(consumer).verify_credentials
#and then I create a new user in my application, with attributes such as the user's follower count, etc
end
このコードを変更するために私が試みたことの例を次に示します。
ユーザーコントローラー
def oauth
consumer = OAuth::Consumer.new("mykey", "mysecret", :site => "siteurl")
request_token = consumer.get_request_token
session[:request_token] = request_token.token
session[:request_token_secret] = request_token.secret
redirect_to 'http://api.twitter.com/oauth/authorize?oauth_token='+request_token.token
end
def callback
consumer = OAuth::Consumer.new("mykey", "mysecret", :site => "siteurl")
request_token = session[:request_token]
atoken = OAuth::RequestToken.new(consumer, request_token.token, request_token.secret).get_access_token(:oauth_verifier => params[:oauth_verifier])
consumer.authorize_from_access(atoken)
user = Twitter::Client.new(consumer).verify_credentials
Gemfile
...
gem 'oauth'
コールバック メソッドには多くの問題があると思いますが、奇妙な点の 1 つは、ローカルで実行している場合は oauth メソッドが正常に機能するのに、ローカルから実行しようとすると「502 Bad Gateway」エラーが発生することです。ライブ (heroku でデプロイ) バージョン。