FirebaseAuthenticationのポップアップ認証(signInWithPopup)はおすすめしない
2022年04月01日 17:35
ISSUEではFirebaseのGithub認証を採用しています。
これまで認証時に signInWithPopup
を使っていましたが、運用していく上でいくつか問題があったので signInWithRedirect
に変更しました。
Unable to process request due to missing initial state.
エラーが発生するPCではログインできるのにiOSのsafariでGithubログインしようとするとエラーが発生します。
これは、iOSの「サイト越えトラッキングを防ぐ」機能が影響しています。
デフォルトでオンになってるので、スマホユーザーのほとんどがこのエラーに遭遇してしまいます。
ISSUEはwebなのでそこまで影響はありませんが、Twitter経由の流入もありますので困ります。
iOSだけのバグかと思いきや、デバイスやブラウザに関わる起きてしまうエラーのようです。
例えば、chromeだとポップアップを制御できるようになっているので、ポップアップを禁止する設定がされてしまうと機能しなくなります。
今なお(最新だと一昨日)、issue上で議論されていますが、
1年以上解決されないので、おそらくこの問題が解決される可能性は低いです。
ポップアップは、いろんなところで制御されることが多くその度に解決策を逐一講じていくのは現実的ではないので、
signInWithRedirect
を利用するのがおすすめです。
ポイントは signInWithRedirect
は返り値が Promise<void>
なので、getRedirectResult()
を使って、
認証情報を得ることです。
変更前
変更後
Unable to process request due to missing initial state.
Firebase Authenticationで"Unable to process request..."エラーに悩まされている話
【Firebase】ソーシャルログインでポップアップウィンドウはおすすめできない
診断を受けるとあなたの現在の業務委託単価を算出します。今後副業やフリーランスで単価を交渉する際の参考になります。また次の単価レンジに到達するためのヒントも確認できます。
目次を見る