omniauth-yahoojpを使ってYahoo!IDでの認証を実装しているサービスで、いつのまにかエラーを吐き出すようになっていました。
さっとググって出てくるものと、ささっとググるだけでは出て来ないものがあったので、対応メモ。
invalid_redirect_url
まずはこちらのエラー。
ERROR -- omniauth: (yahoojp) Authentication failure! invalid_credentials: OAuth2::Error, invalid_redirect_uri: redirect_uri is invalid.
調べてみるとyahoojpではなく、omniauth-oauth21.4.0以降のエラーらしく、「omniauth-oauth2のバージョンを1.3.1にすれば解決できるよ」な記事をよく見かけます。
もしくはomniauth-oauth2のcallback_url
メソッドを上書きでも良いようです。
今回はomniauth-oauth2のバージョンを1.3.1に下げることで対応。
参考:
Gem omniauth-oauth2 バージョン1.4.0のエラー - Kntmrkm.new
OmniAuth OAuth2 1.4.0 以降で `Invalid Credentials` エラー - Qiita
invalid_request: the parameter is invalid. [“client_id”]
この時点で、最初に出ていた「invalid_redirect_url」は解消されたように見えます。
が、今度はまた別のエラーが発生していました。
ERROR -- omniauth: (yahoojp) Authentication failure! invalid_credentials: OAuth2::Error, invalid_request: the parameter is invalid. ["client_id"] {"error":"invalid_request","error_description":"the parameter is invalid. [\"client_id\"]","error_code":"102"}
こちらも調べてみると、今度はoauth2のv1.3.0で変更のあったパラメータを、yahoojpのGemにも追加しないといけないようです。
すでにmikanmarusan/omniauth-yahoojp#4の PRで取り込まれているようなので、この修正を反映すべく、omniauth-yahoojpのGemをアプデします。
$ bundle update omniauth-yahoojp
v0.1.4へのアプデが完了したところで再度確認すると、無事、Yahoo!IDでの認証ができるようになりました。