我正在使用php
和codeigniter
以及Firebase开发一个Web应用程序用于实时数据库。
在我的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);
// ...
});
当我调用login()
我在以下函数中获取用户对象时,我已经实现了Firebase AuthStateChangeListner。
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 登录会话?
若要获取当前用户,请始终使用状态更改侦听器。这是因为获取用户配置文件可能需要往返服务器,因此是异步发生的。
因此,在新页面中,只需使用与之前相同的代码:
firebase.auth().onAuthStateChanged(function(user) {
if (user) {
console.log(user);
} else {
console.log("not signed in");
}
});