0

認証に Twitter OAuth を使用する小さな Sinatra アプリがあります。10 月 8 日から今日までの間、機能しなくなりました。

症状: Twitter にリダイレクトされ、サインインすると、アプリにリダイレクトされますが、アプリはログインしていると認識しません。

自分のコード (1 か月間触れていない) とプラットフォーム (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セッションに を設定します。

authorizeとのauthorized?呼び出しはtwitter_oauth gemからのものです。10 月 12 日に更新バージョンがリリースされ、authorized?メソッドの API 呼び出しが修正されました ( Github のコミットを参照)。ジャックポット!

だから私がしなければならなかったのは:

bundle update twitter_oauth

そして、すべてが再び機能しました。私がまだ見つけていない唯一のことは、twitter_oauth が以前は機能していた理由です。Twitter が API URL の一部を非推奨にしたのではないかと思いますが、確実に知りたいです。

于 2012-10-28T17:15:47.103 に答える