OAuth使用者停止工作,我在哪里开始调试?

时间:2012-10-28 17:15:47

标签: ruby twitter oauth sinatra

我有一个使用Twitter OAuth进行身份验证的小型Sinatra应用。 10月8日到今天的某个时间,它停止了工作。

症状:我被重定向到Twitter,我登录,我被重定向回我的应用程序,但我的应用程序无法识别我已登录。

我可以排除我自己的代码(在一个月内没有触及过)和平台(Heroku被管理,所有请求看起来都很好)。

代码的相关部分是这样的(基于Alex Lang的this code):

get '/session_auth' do
  if params[:oauth_verifier]
    access_token = twitter_client.authorize(
      session[:request_token], session[:request_token_secret], oauth_verifier: params[:oauth_verifier])
    if twitter_client.authorized?
      user = db.load(User.to_id(twitter_client.info['screen_name'])) || User.new(login: twitter_client.info['screen_name'], twitter_access_token: access_token.token,
        twitter_secret_token: access_token.secret)
      db.save! user
      session[:user_id] = user.id
    end
  end
  redirect '/'
end

你是如何或在何处开始调试这样的事情?

1 个答案:

答案 0 :(得分:0)

简短回答:我从我的应用程序到Twitter推进了工具链。

Twitter将OAuth验证程序参数发送回我的回调操作,该操作用于authorize调用。如果此后Twitter客户端已获得授权,则应用会在会话中设置user_id

authorizeauthorized?来自twitter_oauth gem。 10月12日发布了更新版本,修复了authorized?方法的API调用(请参阅commit on Github)。累积奖金!

所以我所要做的就是:

bundle update twitter_oauth

一切都恢复了。我唯一还没有找到的是为什么twitter_oauth以前工作过。我怀疑Twitter弃用了部分API网址,但我想知道。