Rails OAuth::Unauthorized というエラー出たら


OAuth::Unauthorized エラー

Railsで現在サービスを開発しているホリカワ です。

本番環境でツイッター経由ログインしようとすると、上記のエラーが出ました。

原因としては

①CallbackURLの設定ミス
②Twitter API key関連の設定ミス

が多いかとは思います。(これ以外にもたくさんありそう)

解決方法

僕の場合は①でした。

結論からいうと、config/initializers/devise.rbに設定を加えると解決しました。

config/initializers/devise.rb
config.omniauth :twitter, "twiiter api key", "twitter secret key"

scope: 'email', callback_url: 'example.com/auth/twitter/callback'
↑を追加

config/initializers/devise.rb
config.omniauth :twitter, "twiiter api key", "twitter secret key", scope: 'email', callback_url: 'example.com/auth/twitter/callback'

わかったこと

このほかのエラーの原因として、本番環境の場合はhttps://でないとダメみたいです。

また、twitter dev のアプリの設定で、callback_urlが間違っていないかはrails routesで確認してみましょう。

user_twitter_omniauth_callback GET|POST /users/auth/twitter/callback(.:format

終わりに

OAuth::Unauthorized は調べてみた感じだといくつかの要因が考えられそうです。
こちらの記事が解決のお手伝いになればと思います。