Как определить, зарегистрирован ли пользователь в Firebase?
Я использую firebase node api в своих файлах javascript для входа в Google.
firebase.initializeApp(config);
let provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithPopup(provider);
Это отлично работает, и пользователь может войти в систему со своими учетными данными Google. Когда пользователь снова посещает страницу, всплывающее окно открывается снова, но поскольку он уже вошел в систему, всплывающее окно закрывается, не требуя от пользователя какого-либо взаимодействия. Есть ли способ проверить, есть ли уже зарегистрированный пользователь перед вызовом всплывающего окна?
Ответы
Ответ 1
https://firebase.google.com/docs/auth/web/manage-users
Вам нужно добавить наблюдателя изменений состояния auth.
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
// User is signed in.
} else {
// No user is signed in.
}
});
Ответ 2
Вы также можете проверить, есть ли currentUser
var user = firebase.auth().currentUser;
if (user) {
// User is signed in.
} else {
// No user is signed in.
}
Ответ 3
В этом сценарии нет необходимости использовать функцию onAuthStateChanged().
Вы можете легко определить, зарегистрирован ли пользователь или нет, выполнив:
var user = firebase.auth().currentUser;
Для тех, кто сталкивается с проблемой "возврата null", это просто потому, что вы не дожидаетесь завершения вызова firebase.
Предположим, что вы выполняете действие входа на страницу A, а затем вы вызываете страницу B, на странице B вы можете вызвать следующий JS-код, чтобы проверить ожидаемое поведение:
var config = {
apiKey: "....",
authDomain: "...",
databaseURL: "...",
projectId: "..",
storageBucket: "..",
messagingSenderId: ".."
};
firebase.initializeApp(config);
$( document ).ready(function() {
console.log( "testing.." );
var user = firebase.auth().currentUser;
console.log(user);
});
Если пользователь зарегистрирован, тогда пользователь "var user" будет содержать ожидаемую полезную нагрузку JSON, если нет, то это будет просто "null"
И это все, что вам нужно.
Привет
Ответ 4
используйте Firebase.getAuth()
. Он возвращает текущее состояние клиента Firebase. В противном случае возвращаемое значение null
Вот документы: https://www.firebase.com/docs/web/api/firebase/getauth.html
Ответ 5
Сначала импортируйте следующие
import Firebase
import FirebaseAuth
Чем
// Check if logged in
if Auth.auth().currentUser == nil {
// Do smth if user is not logged in
}