【发布时间】:2011-05-14 19:35:40
【问题描述】:
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
宝石文件
...
gem 'oauth'
我确定我的回调方法有很多问题,但奇怪的是,我的 oauth 方法在本地运行时工作正常,但在我运行时却给我一个“502 Bad Gateway”错误从我的 live(使用 heroku 部署)版本尝试。
【问题讨论】:
-
您是否使用代理(即 Heroku 的 Apigee 插件)?
-
不。我使用 heroku gem github.com/heroku/heroku
-
可以直接使用access_token来发出请求吗?即 access_token.request(:get, "api.twitter.com/1/statuses/home_timeline.json")
-
您是否在 routes.rb 中定义了您的 '/auth/:provider/callback' 路由?听起来您获得了正确的重定向。退出您的 Twitter 帐户,然后尝试转到 /auth/twitter。然后它应该将您发送到 Twitter。这是设置 OmniAuth 的另一个示例 arailsdemo.com/posts/19
标签: ruby-on-rails twitter oauth twitter-gem