Подтвердить что ты не робот

Как определить, зарегистрирован ли пользователь в Firebase?

Я использую firebase node api в своих файлах javascript для входа в Google.

firebase.initializeApp(config);
let provider = new firebase.auth.GoogleAuthProvider();
firebase.auth().signInWithPopup(provider);

Это отлично работает, и пользователь может войти в систему со своими учетными данными Google. Когда пользователь снова посещает страницу, всплывающее окно открывается снова, но поскольку он уже вошел в систему, всплывающее окно закрывается, не требуя от пользователя какого-либо взаимодействия. Есть ли способ проверить, есть ли уже зарегистрированный пользователь перед вызовом всплывающего окна?

4b9b3361

Ответ 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   
    }