読者です 読者をやめる 読者になる 読者になる

ウェブサービスを作っています。

OmniAuth で /auth/failure?message=invalid_response にリダイレクトされたけど単なる typo だった

config/routes.rb

Hoge::Application.routes.draw do
  ...
  match '/auth/:provider/callback' => 'sessions#create'
  match '/auth/failure' => 'sessions#failure'
  ...
end


app/controllers/sessions_controller.rb

class SessionsController < ApplicationController
  def create                                                                                                                                                                        
    ...
    rediret_to root_url
  end
  
  def failure
    render :text => 'error!'
  end
end


認証うまくいってるはずなのに、ずっと /auth/failure にリダイレクトされてて何でだろうーと思ったら、単に SessionsController#create で rediret_to とか書いてたせいでした。
NoMethodError だと invalid_response で /auth/failure に飛ばされます。(oa-oauth-0.2.6/lib/omniauth/strategies/oauth.rb:64)
あと、omniauth gem 入れると oa-* gem がインストールされて、omniauth-0.2.6/ 以下にある oa-* ディレクトリのファイルが実行される訳じゃなくて、各 gem のほうが実行されるんですね。


2 時間くらい悩んだのでした。