Rails Twitter認証で困ったこと

2021年7月6日火曜日

Rails twitter

t f B! P L

困った1:認証動作に差異

qiitaと実装したアプリで認証の動きが違った。

ちなみに実装したアプリはこれ

ツイバト

qiitaでは

毎回認証確認の画面になる


実装アプリでは

一度ログインしたことがあったら一瞬認証画面になって即リダイレクトして戻ってくる


原因

認証のメソッドが違った。認証URLに差分あり

qiita

https://api.twitter.com/oauth/authorize?・・・


実装したアプリ

https://api.twitter.com/oauth/authenticate?・・・


twitterのメソッドauthenticateの動きは以下

このメソッドはGET oauth/authorizeとは異なり、ユーザーがすでにアプリケーション権限を付与している場合は、ユーザーがアプリケーションを再承認することなくリダイレクトが発生します。


アプリに使用していたgem omniauth-twitterは認証メソッドのデフォルトにauthenticateを使用している

対策

設定を変えるとリダイレクトせずに確認してくる

# omniauth.rb
Rails.application.config.middleware.use OmniAuth::Builder do
  provider :twitter, ENV["KEY"], ENV["SECRET"],
  # ↓これを追加
    {
      use_authorize: true,
    }
end
 

困った2:認証画面でキャンセルしたらエラー

認証画面でキャンセルしてツイバトに戻ろうとしたら以下のエラー

OAuth::Unauthorized

401 Unauthorized

原因

認証キャンセル時のルーティング設定をしていなかった

対策

それぞれのファイルに以下を追加
# omniauth.rb
OmniAuth.config.on_failure = Proc.new { |env|
  OmniAuth::FailureEndpoint.new(env).redirect_to_failure
}
# routes.rb
  get 'auth/failure', to: 'sessions#failure'
# sessions_controller.rb
  def failure
    redirect_to root_path
  end

参考

  • authorize

  • authenticate

  • omniauth-twitter





自己紹介

Webエンジニアをやっています。日々思ったことや、読書レビュー、IT系の記事などを書き連ねています

広告

[書籍] 世界一楽しい決算書の読み方感想まとめ

  こういう人におすすめ 決算書を読もうとして挫折した人 企業分析したい投資家 会社で経営企画担当、管理職などのポジションの人 概要 著者はTwitterで会計クイズを行なっている 「大手町のランダムウォーカー」さん 。 「日本人全員が財務諸表を読める世界を創る」 を合言葉にして...

QooQ