Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/419.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript Firebase身份验证循环_Javascript_Firebase_Firebase Authentication_Processing.js - Fatal编程技术网

Javascript Firebase身份验证循环

Javascript Firebase身份验证循环,javascript,firebase,firebase-authentication,processing.js,Javascript,Firebase,Firebase Authentication,Processing.js,我使用Firebase身份验证编写了一个程序,如果用户未登录,我希望重定向到Google登录页面,但如果用户登录,则不希望重定向。一切都很好,除了在谷歌登录后返回我的页面,几秒钟后就重定向回登录。这是我的密码: $(document).ready(function() { var provider = new firebase.auth.GoogleAuthProvider(); var uid; var user = firebase.auth().currentUser; var xv =

我使用Firebase身份验证编写了一个程序,如果用户未登录,我希望重定向到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附加到单击,也可以将其从此块拉到(未登录的用户)块。

如果将问题缩小一点,您的运气会更好。例如,这实际上与Processing.js没有任何关系。你也应该尝试使用适当的缩进,这样你的代码更容易阅读。实际上我刚刚修复了它,但你是对的。我之所以使用processing.js标记,是因为它包含在我的完整代码中,但我没有包含该部分。我不知道缩进时如何将文本标记为代码;它不是只有4个空格吗?谢谢你的提示!如果你找到了问题的答案,你可能想发布一个答案或者删除这个问题。但为了将来的参考,您肯定可以在代码块中包含缩进。只需粘贴整个(正确缩进的)代码块,然后突出显示它并按下代码按钮。这将在每行中添加4个空格,并保留您原来的格式。