2012-10-28 76 views
0

我有一個使用Twitter OAuth進行身份驗證的小型Sinatra應用程序。從10月8日到今天的一段時間,它停止工作。OAuth使用者停止工作,我在哪裏開始調試?

症狀:我重定向到Twitter,我登錄,我重定向回我的應用程序,但作爲登錄我的應用程序不承認我

我可以排除自己的代碼(。在一個月內沒有觸及過)和平臺(Heroku被管理,並且所有請求看起來都很好)。

代碼的相關部分是這樣的(基於this code由Alex郎):

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

簡短回答:我把工具鏈從我的應用程序升級到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網址,但我想確切地知道。

相關問題