直径1.5メートル

ひよっこエンジニアのちょっとしたメモ。主に備忘録。たまに雑記。

【Rails】omniauth-yahoojpのエラー対応

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での認証ができるようになりました。