66
54

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

Devise+OmniauthでTwitter認証時に「OAuth::Unauthorized 403 Forbidden」が出て認証できなくなった

Last updated at Posted at 2018-06-14

2018年6月13日朝から、Railsで作った自作サービスでTwitter認証をするとエラーが発生していました。

スクリーンショット 2018-06-14 13.00.26.png

なんだろうと思いググってみると世界中でも同じ事象が起こっているようで、原因はTwitterAPIの仕様変更によるものでした。

TwitterAppsで設定しているコールバックURLと、リクエストで送るコールバックURLのパラメータが異なる場合に弾く仕様に変わったとのことです。

コールバックURLを見直す

僕の自作サービスの場合、Twitter認証後はusers/mypageに飛ばすようにしていたので、Twitter AppsのコールバックURLにはhttps://hogehoge/users/mypageに設定していました。これがよくなかったようです。

8FBD8047-90A9-42C3-A41A-FD2F15678C30.jpg

この記事を参考に、コールバックURLをhttps://hogehoge/users/auth/twitter/callbackにします。

続いてアプリ側です。Rails+Devise+Omniauthで実装しているので、config/devise.rbのコールバックURLを見直します。

config/devise.rb
config.omniauth :twitter, ENV['TWITTER_CONSUMER_KEY'], ENV['TWITTER_CONSUMER_SECRET']

ここでコールバックURLを明示していなかったので、

config/devise.rb
config.omniauth :twitter, ENV['TWITTER_CONSUMER_KEY'], ENV['TWITTER_CONSUMER_SECRET'], callback_url: "https://hogehoge/users/auth/twitter/callback"

とし、明示的にコールバックURLを一致させたところ解決しました。
(追記:Localと本番環境でURLが異なるはずなので、dotenvなどで環境変数にするとよいです。)

以上です。

66
54
3

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
66
54

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?