Firebase 身份验证死循环

Firebase Authentication Endless Loop

我使用 Firebase 身份验证编写了一个程序,如果用户未登录,我想将其重定向到 Google 登录页面,但如果用户已登录则不重定向。一切正常,除了因为当它在 Google 登录后返回到我的页面时,它会在几秒钟后重定向回登录。这是我的代码:

$(document).ready(function() {
var provider = new firebase.auth.GoogleAuthProvider();
var uid;
var user = firebase.auth().currentUser;
var xv = 0;
var yv = 0;
var xpos = 200;
var ypos = 200;
var changeRef = firebase.database().ref();
var keys = [];

if (user != null) {
uid = currentUser.uid;
firebase.database().ref('users/' + uid).set({
xpos: xpos,
ypos: ypos
});
} else {
firebase.auth().signInWithRedirect(provider);
firebase.auth().getRedirectResult().then(function(result) {
if (result.credential) {
// This gives you a Google Access Token. You can use it to access the      Google API.
var token = result.credential.accessToken;
// ...
}
// The signed-in user info.
user = result.user;
}).catch(function(error) {
// Handle Errors here.
var errorCode = error.code;
var errorMessage = error.message;
// The email of the user's account used.
var email = error.email;
// The firebase.auth.AuthCredential type that was used.
var credential = error.credential;
// ...
});
}
var canvas = document.getElementById("canvas");
var processingInstance = new Processing(canvas, sketchProc);

});

当用户登录时,您同时调用了 signInWithRedirect 和 getRedirectResult,这就是您陷入无限循环的原因:

} else {
  firebase.auth().signInWithRedirect(provider);
  firebase.auth().getRedirectResult().then(function(result) {

您可以将 signInWithRedirect 附加到点击或将其从该块拉出到(用户未登录)块。