#reactjs #firebase #firebase-authentication
#reactjs #firebase #firebase-аутентификация
Вопрос:
Я пытаюсь найти способ получить доступ к CreationTime и lastSignInTime, описанным в этой документации.
Есть ли какие-либо примеры его использования в react hooks?
Я не могу понять документацию 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}
Ответ №1:
Это работает.
{auth.user.metadata.creationTime}
Я не понимаю, почему. Ссылки в документации firebase относятся к метаданным как UserMetadata. Я не знаю, как найти часть информации, которая подсказывает людям совершать скачок между UserMetadata и метаданными.
Если кто-нибудь знает, в чем ключ к этому, я был бы вечно благодарен за понимание.
Комментарии:
1. Свойство вызывается
metadata
, его типUserMetadata
. Смотрите firebase.google.com/docs/reference/js/firebase.User#metadata