シークレットモードではFirebaseのsignInWithRedirect/signInWithPopupが機能しない
January 29, 2022
Google Chrome のシークレットモード(インコグニトモード)では Firebase の signInWithRedirect
と signInWithPopup
が機能しません。
最も遭遇しやすいであろう環境を想定して Google Chrome と記載しましたが、他のブラウザでも発生します。
サードパーティの Cookie が許可されていることが必要 #
原因はサードパーティの Cookie がブロックされているためです。
Firebase の signInWithPopup
と signInWithRedirect
は内部的に Cookie を利用しているようで、Chrome のシークレットモードの場合、デフォルトの設定ではサードパーティの Cookie がブロックされていることから、これが起因となって Firebase のこれらの認証処理が機能しなくなります。
モバイルの Chrome の設定
PC の Chrome の設定
回避策は Firebase 外のライブラリなどでトークンを取得すること #
GitHub でもこれに関する質問が存在しました。2018 年時点の回答ではこの問題に対応する予定はないとのことでしたが、本記事現在も未対応なのを鑑みると、今後対応されることもないでしょう。
The underlying communication protocol we use depend on this (3rd party cookies). We have no plans to support this right now.
これを回避するには Firebase 以外のライブラリで OAuth トークンを取得し、それを signInWithCredential
に渡すという方法しかないようです。
This is a known limitation. signInWithPopup/Redirect will not work when 3rd party cookies are not available. To get around it, you need to use the Google JS sign in SDK to get a Google Access token/ID token and then pass to signInWithCredential.
シークレットモードでサービスにログインしようとするのは、個人的にはたまにあるケースだとは思うのですが、これに対応できていないのは正直残念ですね。。。