reactjs - 如何访问firebase auth userMetadata
问题描述
我正在尝试找到一种方法来访问本文档中描述的 creationTime 和 lastSignInTime 。
有没有在反应钩子中使用它的例子?
我一般无法理解 firebase 文档 - 它只是页面上的文字。我认为它是为那些凭直觉知道如何填补空白的人设计的。我仍然对如何做到这一点感到困惑。
我可以使用反应钩子访问 auth.user.email,如下所示:
import React, { useState, useEffect, useContext, createContext } from "react";
import firebase from "../firebase";
import {auth} from "../firebase";
const authContext = createContext();
// Provider wraps app and makes auth object available by useAuth().
export function ProvideAuth({ children }) {
const auth = useProvideAuth();
return <authContext.Provider value={auth}>{children}</authContext.Provider>;
}
// Hook to get the auth
export const useAuth = () => {
return useContext(authContext);
};
// Provider hook that creates auth state
function useProvideAuth() {
const [user, setUser] = useState(null);
const signin = (email, password) => {
return firebase
.auth()
.signInWithEmailAndPassword(email, password)
.then(response => {
setUser(response.user);
return response.user;
});
};
const signup = (email, password) => {
return firebase
.auth()
.createUserWithEmailAndPassword(email, password)
.then(response => {
setUser(response.user);
return response.user;
});
};
const signout = () => {
return firebase
.auth()
.signOut()
.then(() => {
setUser(false);
});
};
const sendPasswordResetEmail = email => {
return firebase
.auth()
.sendPasswordResetEmail(email)
.then(() => {
return true;
});
};
const confirmPasswordReset = (code, password) => {
return firebase
.auth()
.confirmPasswordReset(code, password)
.then(() => {
return true;
});
};
useEffect(() => {
const unsubscribe = firebase.auth().onAuthStateChanged(user => {
if (user) {
setUser(user);
} else {
setUser(false);
}
});
return () => unsubscribe();
}, []);
return {
user,
signin,
signup,
signout,
sendPasswordResetEmail,
confirmPasswordReset
};
}
现在,我试图弄清楚我需要做什么才能访问此处描述的字符串值或此处描述的时间戳。
我尝试了每一个(所有猜测):
{auth.user.UserMetadata().creationTime}
{auth.user.creationTime}
{auth.user.UserMetadata.creationTime}
解决方案
这行得通。
{auth.user.metadata.creationTime}
我不明白为什么。firebase 文档中的引用将元数据称为 UserMetadata。我不知道如何找到告诉人们在 UserMetadata 和元数据之间进行跳跃的信息。
如果有人知道这其中的关键是什么,我将永远感激你的洞察力。
推荐阅读
- react-native - Android 上的水平 ScrollView 行为
- amazon-web-services - 使用 AWS ACM 证书配置 Gloo 虚拟服务 SSL
- sql - 如何在 SQL 中将周转换为月?
- java - 接口和扩展
- java - 将 hashmap 值交换为键
- html - 网页的 HTML Img 标签
- google-sheets - 从 Google 表格中的 cellReference 超链接创建静态超链接
- vue.js - 如何使用 Bootstrap-vue 切换单个行的详细信息
- docker - Gradle docker build 无限期挂起
- r - 有条件地更改R中列表的日期格式