Управление сессиями Firebase с использованием веб-приложения php - PullRequest
0 голосов
/ 03 октября 2018

Я разрабатываю веб-приложение с использованием php и codeigniter и firebase для базы данных в реальном времени.

В моих codeigniter представлениях я использую код javascript для управления аутентификацией на основе firebase.

следующий код, который я использую для управления входом через firebase по электронной почте.

 function login(){

  var userEmail = "abcd@gmail.com" ;
  var userPass = "password";

  const fr = firebase.auth().signInWithEmailAndPassword(userEmail, userPass).catch(function(error) {
    // Handle Errors here.
    console.log("got error");
    var errorCode = error.code;
    var errorMessage = error.message;

    window.alert("Error : " + errorMessage);

    // ...
  });

Я реализовал Firebase AuthStateChangeListner, когда я вызываю login() Я получаю объект пользователя в следующей функции.

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    // User is signed in.
    console.log("signin");
    console.log(user);
  } else {
    // No user is signed in.
    console.log("no sign");
  }
});

При загрузке страницы я вызываю функцию входа в систему и получаю успешный пользовательский объект.

$(function(){
    login();
});

Проблема в том, что если я перейду на другую страницу и попытаюсь получить доступ к текущему пользовательскому объекту, как это, то я получаюnull.

var user = firebase.auth().currentUser;

как я могу управлять сеансом входа в firebase при переадресации нескольких страниц?

1 Ответ

0 голосов
/ 03 октября 2018

Чтобы получить текущего пользователя, всегда используйте прослушиватель изменения состояния.Это связано с тем, что для получения профиля пользователя может потребоваться обратный путь к серверу, и, следовательно, это происходит асинхронно.

Так что на новой странице просто используйте тот же код, что и раньше:

firebase.auth().onAuthStateChanged(function(user) {
  if (user) {
    console.log(user);
  } else {
    console.log("not signed in");
  }
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...