javascript - ReactJS 项目中的 Firebase 身份验证 - onAuthStateChanged 中的用户为 null
问题描述
我正在努力通过firebase设置电子邮件/密码身份验证。我的firebase配置设置是这样的
// Firebase App (the core Firebase SDK) is always required and must be listed first
import firebase from "firebase/app";
//authenticaion module
import "firebase/auth";
// Add the Firebase products that you want to use
import "firebase/firestore";
var firebaseConfig = {
// I've got my api key and other info copied from the console in here
};
// Initialize Firebase
firebase.initializeApp(firebaseConfig);
export const db = firebase.firestore();
export const app = firebase.auth();
我创建了一个登录表单,它调用以下函数:
import { app } from "../firebase/firebaseConfig";
const createAccount = () => {
app
.createUserWithEmailAndPassword(email, password)
.then((user) => {
console.log("user created");
console.dir(user);
})
.catch((error) => {
console.log("something went wrong");
});
};
第一个问题:我没有看到“用户创建”消息,即使我可以看到在 Firebase 身份验证控制台中创建的用户。我也没有看到表明发生异常的“出现问题”消息。
第二个问题:我正在尝试在用户登录时进行重定向。为此,我已按照文档中的建议在 Firebase auth 对象上设置了一个侦听器:
firebase.auth().onAuthStateChanged((user) => {
console.log("Inside listener");
console.dir(user);
});
问题是,我看到了控制台消息,所以函数正在触发,但即使正在创建用户,这里的“用户”始终为空。
Firebase 版本:8.2.1
谁能看到我在这里缺少的东西?
解决方案
在身份验证状态侦听器中,您的回调首先被调用是正常的null
,因为这通常是加载页面时的初始用户身份验证状态。
Firebase 会尝试自动恢复用户的身份验证状态,但这可能需要一些时间。只有在状态恢复后,它才会再次使用当时处于活动状态的用户帐户调用您的身份验证状态侦听器。
推荐阅读
- apache-spark - 使用 Apache Storm 配置 elasticsearch APM
- python - 按月计算数据框的累计值
- node.js - createReadStream() 使用内存文件 (Multer memoryStorage)
- ios - iOS 中的深层链接重定向错误 - “Safari 无法打开页面”
- html - 最小化页面时如何修复css中的菜单栏和容器
- node.js - 如何使用 HTTPS 上传 (REST) 上传 XML 文件
- ibm-watson - 扬声器标签不一致??即使只有 2 个扬声器
- ios - swift中字符0周围的无效值
- amazon-rds - AWS RDS 似乎一次只处理 3 个请求
- javascript - 从服务器到浏览器的数据传输大小(数据下载/带宽使用)