はじめに
TwitterのAPIを使ってTwitterログイン機能を作っているのですが、認証エラーでハマったのでメモ。
今回は
・404(forbidden)
・401(Unauthorized)
の対処法を解説していきます。
401エラーの対処方

401エラーとは、認証エラーのことで、リクエスト側に問題があるということです。
原因: API keyが間違っていた。
consummer key
やconsumer sercret
が間違っている可能性があるので、developerページでekey
を間違えて打っていないか確かめて見ましょう。
config.omniauth :twitter, (consummer key), (consumer sercret)
さて、これが治ると次は403エラーにたどり着きました。
403エラーの対処法

403エラーは、閲覧が禁止されてると言う意味です。
原因: callbackのurlとlocalhost
のurlが一致していなかった。
developer画面に移動し、アプリの詳細画面に移動して、登録したcallbackのurlを確認してみましょう。

この赤で囲った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
が間違っていただとか、リクエストに問題があることも多いので、焦らずひとつづつ潰していきましょう。