「Google でログイン」しようとすると、ログに次のエラーが表示されます。
Processing by Users::OmniauthCallbacksController#failure as HTML
ユーザーのメールアドレスや名前など、Google からのすべてのデータが URL 経由で (ログに) 送信されていることがわかります。では、何がうまくいかないのでしょうか?私のコールバックは実行されていません。サイトの sign_in ページにのみリダイレクトされます。
これは数週間前に正常に機能していたため、すべてが正しく構成されていると確信しています。私は何も変わっていないと思います。Facebook のログインは引き続き正常に機能します。
この失敗をデバッグする方法についてのアイデアはありますか? ログには、パラメーターと値でいっぱいの長い URL 以外には何もありません。INFO メッセージのみ。上に投稿されたものは、失敗について何かを言った唯一のものです。
アップデート
コントローラーに「失敗」メソッドを追加しました
def failure
render :text => params.inspect
end
リダイレクトを停止し、これを印刷しました:
{}
URLはこれでした:
/users/auth/google/callback?_method=post&openid.ns=http%3A%2F%2Fspecs.openid.net%2Fauth%2F2.0&openid.mode=id_res&openid.op_endpoint=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fud&openid.response_nonce=2012-04-16T12%3A25%3A49Z_v1fNngSQJaHBQ&openid.return_to=http%3A%2F%2Fdev.myapp.me%3A3000%2Fusers%2Fauth%2Fgoogle%2Fcallback%3F_method%3Dpost&openid.assoc_handle=AMlYA9Urw_lYamPphTSdQ9a6DU0Ez0y5RaDDM78qPL7Xgm77nMpJiB85&openid.signed=op_endpoint%2Cclaimed_id%2Cidentity%2Creturn_to%2Cresponse_nonce%2Cassoc_handle%2Cns.ext1%2Cext1.mode%2Cext1.type.ext5%2Cext1.value.ext5%2Cext1.type.ext8%2Cext1.value.ext8%2Cext1.type.ext2%2Cext1.value.ext2&openid.sig=2FPjo7U1e%2Fde248XpUgjQLduNAM%3D&openid.identity=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fid%3Fid%3DAItOawk1F5U6x_-kJnydjoww5haU41tquh1Zl2c&openid.claimed_id=https%3A%2F%2Fwww.google.com%2Faccounts%2Fo8%2Fid%3Fid%3DAItOawk1F5U6x_-kJnydjoww5haU41tquh1Zl2c&openid.ns.ext1=http%3A%2F%2Fopenid.net%2Fsrv%2Fax%2F1.0&openid.ext1.mode=fetch_response&openid.ext1.type.ext5=http%3A%2F%2Faxschema.org%2FnamePerson%2Ffirst&openid.ext1.value.ext5=Some_User&openid.ext1.type.ext8=http%3A%2F%2Faxschema.org%2Fcontact%2Femail&openid.ext1.value.ext8=some_email%40gmail.com&openid.ext1.type.ext2=http%3A%2F%2Faxschema.org%2FnamePerson%2Flast&openid.ext1.value.ext2=Some_User
つまり、必要なデータはすべて URL にありますが、devise/omniauth はそれを取得していません (それが、コールバックの代わりに「失敗」メソッドを呼び出しているようです)。「params」配列を介してアクセスできるようにする必要があるかどうかはわかりません。
?_method=post
私のサイトへのリクエストはすべて GET リクエストであるため、この部分にも興味があります。おそらく、omniauth から Google に対して行われたリクエストが POST だったことを意味しているにすぎません。
何かご意見は?