2015-01-13 4 views
1

Я довольно новичок в Firebase. Я пытаюсь подключить Google OAuth к экземпляру Firebase.Firebase: Google OAuth Infinite Redirects

Я все установил и получил идентификатор клиента и клиент. Я добавил localhost в белый список в панели Firebase. Затем я использовал Firebase пример ниже:

<html> 
<head> 
    <script src="https://cdn.firebase.com/js/client/2.0.4/firebase.js"></script> 
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script> 
</head> 
<body> 
<script> 

    var ref = new Firebase("https://<firebase url>.firebaseio.com"); 
    ref.authWithOAuthRedirect("google", function(error, authData) { 
    if (error) { 
     console.log("Login Failed!", error); 
    } else { 
     console.log("Authenticated successfully with payload:", authData); 
    } 
    }); 

</script> 
</body> 
</html> 

Когда я открываю его, он просит разрешения на проверку подлинности с помощью Google. Когда я принимаю это, он просто продолжает делать перенаправления (бесконечность) и не заканчивает загрузку. Любое понимание проблемы будет полезно. Благодарю.

Редактировать: Я заметил, что: метод authWithOAuthPopup() работает, но перенаправление просто застревает в бесконечном цикле перенаправления.

+0

Вы можете воспроизвести это в JSFiddle/JSBin? –

+0

В JSFiddle я получаю: {"error": "Пожалуйста, используйте POST-запрос"} – dimxasnewfrozen

ответ

8

Каждый раз, когда вы вызываете ref.authWithOAuthRedirect(...), вы сообщаете Firebase инициировать поток аутентификации на основе переадресации и перенаправлять браузер поставщику OAuth. Вызов этого метода всегда будет пытаться создать сеанс , даже если он уже сохраняется в браузере.

Для создания только попытка нового сеанса входа в систему, если один уже не существует, попробуйте следующее, что делает использование слушателя onAuth(...) событий:

var ref = new Firebase("https://<firebase url>.firebaseio.com"); 
ref.onAuth(function(authData) { 
    if (authData !== null) { 
    console.log("Authenticated successfully with payload:", authData); 
    } else { 
    // Try to authenticate with Google via OAuth redirection 
    ref.authWithOAuthRedirect("google", function(error, authData) { 
     if (error) { 
     console.log("Login Failed!", error); 
     } 
    }); 
    } 
}) 
+1

Замечательно! Спасибо. Я хотел бы думать, что я знаю javascript достаточно хорошо, но все еще не знакомы со всеми различными методами Firebase. Это отлично работает. – dimxasnewfrozen