【发布时间】:2021-06-13 09:34:23
【问题描述】:
我试图在我的 Firebase 应用中获取当前登录用户的电子邮件,但它一直给我一个错误。
这是我获取当前用户电子邮件的代码:
user_email = firebase.auth().currentUser.email
我得到的错误是: Error Image
【问题讨论】:
标签: javascript firebase firebase-authentication
我试图在我的 Firebase 应用中获取当前登录用户的电子邮件,但它一直给我一个错误。
这是我获取当前用户电子邮件的代码:
user_email = firebase.auth().currentUser.email
我得到的错误是: Error Image
【问题讨论】:
标签: javascript firebase firebase-authentication
在您的 firebase.auth().currentUser.email 运行时,firebase.auth().currentUser 似乎为空。这很常见,因为 Firebase 在页面加载时会刷新用户的身份验证状态,这需要它对服务器进行异步调用。
因此,您不应假设有用户登录。您应该检查当前代码:
if (firebase.auth().currentUser) {
user_email = firebase.auth().currentUser.email
}
或者(通常更好)您应该使用所谓的身份验证状态侦听器,让您的代码自动响应用户身份验证状态的变化。从 getting the currently signed-in user 上的 Firebase 文档中可以看出:
firebase.auth().onAuthStateChanged((user) => {
if (user) {
// User is signed in, see docs for a list of available properties
// https://firebase.google.com/docs/reference/js/firebase.User
var uid = user.uid;
user_email = firebase.auth().currentUser.email;
// TODO: execute code that needs `user_email`
} else {
// User is signed out
// ...
}
});
【讨论】:
firebase.auth().onAuthStateChanged?
onAuthStateChanged 在没有 user 的情况下触发,则听起来用户未登录。由于 Firebase 不会自动将用户注销,您可能需要检查浏览器开发人员的“网络”选项卡中正在进行的调用控制台查看页面加载期间发生的情况 - 并使用该信息(和更新的代码)更新您的问题。