LoginSignup
6
4

More than 5 years have passed since last update.

Twitterログイン認証で404(forbidden)や401(Unauthorized)エラーがでたときの対処法

Posted at

はじめに

TwitterのAPIを使ってTwitterログイン機能を作っているのですが、認証エラーでハマったのでメモ。

今回は
・404(forbidden)
・401(Unauthorized)
の対処法を解説していきます。

401エラーの対処方

Action_Controller__Exception_caught.png

401エラーとは、認証エラーのことで、リクエスト側に問題があるということです。

原因: API keyが間違っていた。
consummer keyconsumer sercretが間違っている可能性があるので、developerページでekeyを間違えて打っていないか確かめて見ましょう。

config/initializers/devise.rb
  config.omniauth :twitter, (consummer key), (consumer sercret)

さて、これが治ると次は403エラーにたどり着きました。

403エラーの対処法

Action_Controller__Exception_caught.png

403エラーは、閲覧が禁止されてると言う意味です。

原因: callbackのurlとlocalhostのurlが一致していなかった。

developer画面に移動し、アプリの詳細画面に移動して、登録したcallbackのurlを確認してみましょう。

Twitter_Developers.png

この赤で囲ったurlの部分と、local環境で使いたいurlが一致しないとエラーを吐いてしまいます。

rails routes | grep callbackで、callbackのurlを確認します。

user_twitter_omniauth_authorize GET|POST /users/auth/twitter(.:format)          omniauth_callbacks#passthru
user_twitter_omniauth_callback GET|POST users/auth/twitter/callback(.:format) omniauth_callbacks#twitter

ここではusers/auth/twitter/callbackに飛ばしたいので、

callback URLはhttp://127.0.0.1:3000/users/auth/twitter/callbackとしました。

と、ここまでで解決する人もいたりいなかったりすると思うんですが、個人的に一部ハマったポイントとしては、起動しているローカル環境のurlと、developerで設定したcallback_urlが完全一致してないと同じように403エラーが発生してしまうところです。

つまり、
callback_url → 
http://127.0.0.1:3000/users/auth/twitter/callback
ローカル環境で立ち上げたurl→
http://localhost:3000/users/auth/twitter/callback
はエラーになります。

正しくは、
callback_url →
http://127.0.0.1:3000/users/auth/twitter/callback
ローカル環境で立ち上げたurl →
http://127.0.0.1:3000/users/auth/twitter/callback
です。

このように、ドメイン名も設定したcallback_urlと一致させるようにしましょう。

確認事項

・keyが間違っていないか?
・developerのcallback_urlが間違っていないか?
・ドメイン名も一致しているか?

ここであげたもの以外にもエラーの原因となるものはたくさんあるかと思います。
単にAPI keyが間違っていただとか、リクエストに問題があることも多いので、焦らずひとつづつ潰していきましょう。

6
4
0

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
6
4