firebaseの認証ができない


chrome のシークレットモードで 「サードパーティの Cookie をブロックする」 がオンになっていると、 firebase の認証ができなくなる。

全くダメではないと思うが、google がプロバイダで以下のようにしているときはダメ。 プロバイダがメールとパスワードでの認証だと大丈夫(ただしこの時は firebaseui でログインしているので、いろいろ条件が異なる)

index.html
function login() {
   firebase.auth()
   .setPersistence(firebase.auth.Auth.Persistence.SESSION)
   .then(() => {
      const provider = new firebase.auth.GoogleAuthProvider();
      return firebase.auth().signInWithRedirect(provider);
   })
   .catch((error) => {
      console.log("err");
   });
}

エラーがキャッチされるわけではなく、 user が null のままになっている。
(ログイン状態が変わってないということのはずなのに、下のイベントはキックされていた)

index.html
document.addEventListener("DOMContentLoaded", function () {
   firebase.auth().onAuthStateChanged((user) => {
      console.log("change");
      if (user) {
         document.location.href = "login.html";
      }
   });
});

ソースは省略するが、firebaseui を使って同じユーザでメール&パスワードでログインしてみると、googleユーザだよとメッセージが表示された後、以下のメッセージが出てくる。

そういえば、こんなワーニングがコンソールにで前から出てたな。。。

A cookie associated with a cross-site resource at https://google.com/ was set without the `SameSite` attribute.
A future release of Chrome will only deliver cookies with cross-site requests if they are set with `SameSite=None` and `Secure`.
You can review cookies in developer tools under Application>Storage>Cookies and see more details at https://www.chromestatus.com/feature/5088147346030592 and https://www.chromestatus.com/feature/5633521622188032.

クッキー使わずにできないのかな〜

バージョンをメモるの忘れてた

<script defer src="/__/firebase/7.13.1/firebase-app.js"></script>
<script defer src="/__/firebase/7.13.1/firebase-auth.js"></script>