FirebaseAuthenticationのポップアップ認証(signInWithPopup)はおすすめしない

0

2022年04月01日 17:35

ISSUEではFirebaseのGithub認証を採用しています。
これまで認証時に signInWithPopup を使っていましたが、運用していく上でいくつか問題があったので signInWithRedirect に変更しました。

問題1: iOSで Unable to process request due to missing initial state. エラーが発生する

PCではログインできるのにiOSのsafariでGithubログインしようとするとエラーが発生します。
これは、iOSの「サイト越えトラッキングを防ぐ」機能が影響しています。

デフォルトでオンになってるので、スマホユーザーのほとんどがこのエラーに遭遇してしまいます。
ISSUEはwebなのでそこまで影響はありませんが、Twitter経由の流入もありますので困ります。

問題2: MacのChromeでもポップアップが途中で閉じてしまう時がある

iOSだけのバグかと思いきや、デバイスやブラウザに関わる起きてしまうエラーのようです。
例えば、chromeだとポップアップを制御できるようになっているので、ポップアップを禁止する設定がされてしまうと機能しなくなります。

開発元の対応

今なお(最新だと一昨日)、issue上で議論されていますが、
1年以上解決されないので、おそらくこの問題が解決される可能性は低いです。

image

解決策

ポップアップは、いろんなところで制御されることが多くその度に解決策を逐一講じていくのは現実的ではないので、
signInWithRedirectを利用するのがおすすめです。

実装方法

ポイントは signInWithRedirect は返り値が Promise<void> なので、getRedirectResult() を使って、
認証情報を得ることです。

変更前
img

変更後
img

参考

Unable to process request due to missing initial state.
Firebase Authenticationで"Unable to process request..."エラーに悩まされている話
【Firebase】ソーシャルログインでポップアップウィンドウはおすすめできない

# Firebase
0

診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。

目次を見る