【Rails】deviseのTwitter認証で「Unauthorized 403 Forbidden」が出てしまう場合の対処法

開発メモです。2018年6月〜Twitter認証の仕様変更により、コールバックURLの指定によっては、エラーが出てしまう現象が起こるようです。
個人的にローカルで開発していたRailsアプリ(deviseのTwitter認証)で、Twitterログインしようとすると、突然以下のようなエラーが表示されるようになっていました。

OAuth::Unauthorized 403 Forbidden self.token_request(http_method, uri.path, token, request_options, arguments) when (400..499) raise OAuth::Unauthorized, response else response.error! end

原因

TwitterのAPIの仕様変更によるものでした。Settingで任意選択だった「Callback URL Lock」という項目がデフォルトでONになったようです。

「Callback URLs」の変更で解決

development環境

僕の場合(ローカル開発環境)では、Twitter AppsのSettingで、「Callback URLs」に以下の2つを追加することで、エラーが解消されました。

  • http://127.0.0.1:3000/auth/twitter/callback
  • http://localhost:3000/auth/twitter/callback

/auth/twitter/callbackではなく/user/auth/twitter/callbackなどの場合もあると思います。rails routesコマンドで「user_twitter_omniauth_callbacks」のルーティングを確認するのが良いですね。

Production環境の場合

stackoverflowでは、本番環境の場合「Callback URLs」に以下のようなURLを追加することで解決したという報告が挙がっていました。

  • https://ドメイン/auth/twitter/callback
  • http://ドメイン/auth/twitter/callback

※ こちらも/user/auth/twitter/callbackなどとなっている場合があるので、うまくいかない場合はルーティングを要確認。

同じカテゴリーの記事
同じカテゴリーの記事一覧
メモ
サルワカ