0

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

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

我可以排除我自己的代码(一个月内没有碰过它)和平台(Heroku 是托管的,所有请求看起来都很好)。

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

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

你如何或从哪里开始调试这样的事情?

4

1 回答 1

0

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

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

和调用来自authorizetwitter_oauth gem。更新版本于 10 月 12 日发布,修复了该方法的 API 调用(参见Github 上的提交)。大奖!authorized?authorized?

所以我所要做的就是:

bundle update twitter_oauth

一切都重新开始了。我唯一还没有弄清楚的是为什么 twitter_oauth 以前可以工作。我怀疑 Twitter 已经弃用了他们的部分 API URL,但我想确定一下。

于 2012-10-28T17:15:47.103 回答