Firebase Authenticationで"Unable to process request..."エラーに悩まされている話

2 min read読了の目安(約2400字

追記(20210602)

We are well aware of this issue and we are working hard on a medium-to-long term fix. This is a really tough problem and certainly not a quick one to address.

issueに、この問題の解決までしばらく時間がかかりそうとの投稿がありました。今できる策として、下記に記載した内容に加え

が指摘されています。筆者はfirebase-authを使わない方式に変更しようと考えていますが、各種provider提供のSDKを利用してうまくいったという方がいらっしゃれば、コメント等で教えていただければ幸いです。

https://github.com/firebase/firebase-js-sdk/issues/4256#issuecomment-852252857

TL;DR

  • Firebase Authenticationでソーシャルログインを行うと、不定期に "Unable to process request..." エラーが発生する
  • iOSでデフォルト設定になっている「サイト越えトラッキングを防ぐ」(設定>Safari>サイト越えトラッキングを防ぐ)機能が原因の一つと思われる
  • Firebaseのcustom domainにwebサイトと同じドメインを設定する(same-siteにする)ことで、発生頻度は減ったが、解決には至っていない
  • 解決に向けて情報を集めたい

ログイン処理が中断する

運営しているWebサイトで、認証システムとしてFirebase Authenticationを採用しているのですが、iOSでのログイン時に時々下記のようなエラーが表示され、ログイン処理が中断する問題に悩まされています。

Unable to process request due to missing initial state.
This may happen if browser sessionStorage is inaccessible or accidentally cleared.

※該当issueはこちら

https://github.com/firebase/firebase-js-sdk/issues/4256

この事象は、iOS上でTwitterやFacebook等のソーシャルログインを実行した後、FirebaseのコールバックURLにリダイレクトする際に不定期に発生しています。通常のSafariではあまり発生しませんが、アプリ内Safariだとかなりの頻度で発生します。

処理の流れ(Twitterの場合)

  1. ログイン処理開始
  2. Twitter上のログインページへ遷移
  3. ログイン成功後、FirebaseのコールバックURLにリダイレクト
  4. 3.の時点で、"Unable to process request..." のエラーが表示される

当方で確認した限りでは、Android端末では発生しませんでした。しかし、上記issueにはAndroidでの問題報告もなされており、条件次第では発生する可能性があります。

custom domainを設定してみる

調べていくうちに、iOS設定の「サイト越えトラッキングを防ぐ」をOFFにすることで、上記事象が発生しなくなることが分かりました。

※「サイト越え(cross-site)」については、下記記事にまとめられています。

https://zenn.dev/agektmr/articles/f8dcd345a88c97

cross-site trackingが問題ならば、firebase側のコールバック先とwebサイトをsame-siteにすることで解決できるかも…issueにもそのようなことが書かれているし…

ということで、custom domainをwebサイトに合わせて設定したところ、上記事象が発生する頻度は減りました。ただし、それでも断続的に発生します。

※custom domainの設定については下記など様々記事があるので、この場では省略します。

https://zenn.dev/suzukey/articles/firebase-auth-custom-domain

有効な対処方法の報告はなし

既にFirebaseサポートにバグ報告はされているようなのですが、その後の進展報告はありません。

いつ改善されるかも分からない状況のため、新たに認証システムを検討される際には、Firebase Authenticationは外した方が良さそうです。

同じような事象で悩んでいる方がいらっしゃったら、ぜひコメント等で情報共有していただけると嬉しいです。