我有一个使用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
你是如何或在何处开始调试这样的事情?
答案 0 :(得分:0)
简短回答:我从我的应用程序到Twitter推进了工具链。
Twitter将OAuth验证程序参数发送回我的回调操作,该操作用于authorize
调用。如果此后Twitter客户端已获得授权,则应用会在会话中设置user_id
。
authorize
和authorized?
来自twitter_oauth gem。 10月12日发布了更新版本,修复了authorized?
方法的API调用(请参阅commit on Github)。累积奖金!
所以我所要做的就是:
bundle update twitter_oauth
一切都恢复了。我唯一还没有找到的是为什么twitter_oauth以前工作过。我怀疑Twitter弃用了部分API网址,但我想知道。