0

Firebase認証を使用してプログラムを作成しましたが、ユーザーがログインしていない場合はGoogle SignInページにリダイレクトしますが、ユーザーがログインしている場合はリダイレクトしません。それはGoogle Sign Inの後に私のページに戻り、数秒後にSignInにリダイレクトされます。ここに私のコードです:Firebase認証エンドレスループ

ユーザーはあなたが無限ループに陥っている理由あなたが並列にsignInWithRedirectとgetRedirectResultの両方を呼び出している中で、つまり署名され
$(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); 

}); 
+0

少し問題を絞り込んだ方がよいでしょう。例えば、これはProcessing.jsとはまったく関係がありません。また、適切な字下げを使用してコードを読みやすくする必要があります。 –

+0

私は実際にそれを修正しましたが、あなたは正しいです。それは私のフルコードであるためprocessing.jsタグを付けましたが、私はその部分を含めませんでした。インデントされたときにテキストをコードとしてマークする方法がわかりません。それはちょうど4スペースを持っていないのですか?ヒントをありがとう! –

+0

質問に対する回答を見つけた場合は、回答を投稿するか、質問を削除するだけです。しかし、将来の参照のために、あなたは間違いなくインデントをコードブロックに含めることができます。コードブロック全体を(正しくインデントされた)コードブロックに貼り付け、強調表示してコードボタンを押してください。これにより、各行に4つのスペースが追加され、もともとの書式設定は維持されます。 –

答えて

1

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

アタッチしますかsignInWithRedirectをクリックするか、このブロックから(ユーザーがサインインしていない)ブロックにプルします。