発生した問題
Railsでomniauth-backlog を使って、Nulab BacklogでのOAuth2認証を行いたいが、下記のようなエラーが出て認証が通らない。
OAuth2::Error (invalid_request: redirect_uri_mismatch
{"error":"invalid_request","error_description":"redirect_uri_mismatch"}):
原因
リダイレクト時のURLが http://<RAILS_HOST>/auth/backlog/callback?code=xxx&state=yyy
と、codeとstateパラメータが付いており、URLがマッチしないのが原因。
対応方法
config/initializers/omniauth.tb の 先頭 に以下のようなパッチをあてる。
OmniAuth::Strategies::Backlog.class_eval do
def callback_url
full_host + script_name + callback_path
end
end
一番良い対応方法
現状 2015/08 から更新されてないので、本来このgemを使わず、自分で実装するのが一番良い解決策。(でも楽したいですよね)