rails6.1.0
Webアプリにfacebookによるソーシャルログイン機能を実装しました。
これ自体は正常に動作しているのですが、facebookログイン前だった場合に表示されるfacebookログイン画面にてキャンセル(ログインせず「後で」をクリック)すると、画像のエラーになります。
ログインせず、「後で」をクリックすると、下のエラーになります。
OmniAuth::Strategies::Facebook::NoAuthorizationCodeError must pass either a `code` (via URL or by an `fbsr_XXX` signed request cookie)
biding入れましたが止まらないため、認証画面からアプリへ返る前でエラーになってるようです。
config\routes.rb
ruby
1 get 'auth/:provider/callback', to: 'omniauth_callbacks#authentication'
ruby
1class OmniauthCallbacksController < ApplicationController 2 def authentication 3 binding.pry 4 end 5end
調べたこと
海外ですが恐らく同じ症状と思われる記事がありました。
当方の英語レベルは自信ないですが、以下のように読み解きました。
・omniauth-facebook gemのバグである
・rackレベルのエラーのためアプリ側で補足できない
・以下のコードで暫定的に対応した
ruby
1require 'newrelic_rpm' 2 3module OmniAuth 4 class Builder < ::Rack::Builder 5 6 def call_with_error_handling(env) 7 begin 8 call_without_error_handling(env) 9 rescue OmniAuth::Strategies::Facebook::NoAuthorizationCodeError => error 10 # Do whatever you'd like when rescuing.. I wanted to report to NewRelic. 11 NewRelic::Agent.notice_error(error, env) 12 env 13 end 14 end 15 16 alias_method_chain :call, :error_handling 17 18 end 19end
上記のコードを試してみたいのですが、恥ずかしながらどこに追加して良いのか分かりません。
「Rack」というのも今回初めて知りましたが、よく分からずにいます・・・。
上記のコードを試す方法、あるいは同じ症状を対処された方、アドバイスいただけないでしょうか?
宜しくお願い致します。
回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2021/11/02 22:47 編集
2021/11/03 09:15
2021/11/04 03:43
2021/11/04 10:15
2021/11/04 12:02