如何访问Firebase身份验证用户元数据

时间:2020-09-15 00:32:08

标签: reactjs firebase firebase-authentication

我正在尝试找到一种访问documentation中所述的creationTime和lastSignInTime的方法。

在React挂钩中是否有使用它的示例?

我通常无法理解Firebase文档-只是页面上的文字。我认为它是为那些凭直觉知道如何填补空白的人设计的。一般而言,我仍然对如何做到这一点感到迷惑。

我可以使用react钩子访问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
  };
}

现在,我正在尝试找出访问here描述的字符串值或here描述的时间戳所需的操作。

我尝试了所有(所有猜测):

 {auth.user.UserMetadata().creationTime}

 {auth.user.creationTime}

 {auth.user.UserMetadata.creationTime}

1 个答案:

答案 0 :(得分:0)

这有效。

                            {auth.user.metadata.creationTime}

我不明白为什么。 Firebase文档中的参考将元数据称为UserMetadata。我不知道如何找到告诉人们在UserMetadata和元数据之间实现跨越的信息。

如果有人知道这是什么关键,那么我将永远感激这一见解。