首页 > 解决方案 > 如何访问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}

标签: reactjsfirebasefirebase-authentication

解决方案


这行得通。

                            {auth.user.metadata.creationTime}

我不明白为什么。firebase 文档中的引用将元数据称为 UserMetadata。我不知道如何找到告诉人们在 UserMetadata 和元数据之间进行跳跃的信息。

如果有人知道这其中的关键是什么,我将永远感激你的洞察力。


推荐阅读