firebaseの認証ができない
chrome のシークレットモードで 「サードパーティの Cookie をブロックする」
がオンになっていると、 firebase の認証ができなくなる。
全くダメではないと思うが、google がプロバイダで以下のようにしているときはダメ。 プロバイダがメールとパスワードでの認証だと大丈夫(ただしこの時は firebaseui でログインしているので、いろいろ条件が異なる)
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 のままになっている。
(ログイン状態が変わってないということのはずなのに、下のイベントはキックされていた)
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>
Author And Source
この問題について(firebaseの認証ができない), 我々は、より多くの情報をここで見つけました https://qiita.com/kihi1215/items/aafe5d995e6f4fc1b346著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .