Soy nuevo en mecanografiado y estoy tratando de convertir mi proyecto de reacción a mecanografiado. Estoy creando un usuario a través de firebase pero me da este error La propiedad '_tokenResponse' no existe en el tipo 'UserCredential'. ¿Cómo puedo solucionar esto?
createUserWithEmailAndPassword(auth,values.email,values.password) .then((userCredential) => { console.log(userCredential); setSubmitting(false); authContext.logIn(userCredential._tokenResponse.idToken); navigate('/'); }).catch((err)=>{ setError(err.message); })El código completo para authContext
import React, {useState} from 'react'; const AuthContext=React.createContext({ token:'', isLoggedIn:false, logIn:(token:string)=>{}, logOut:()=>{}, }); export const AuthContextProvider:React.FC=(props)=>{ const initialToken=localStorage.getItem('token')??''; const [token,setToken]=useState(initialToken); const userIsLoggedIn=!!token; //console.log(userIsLoggedIn); const loginHandler=(token:string)=>{ // console.log(token); setToken(token); localStorage.setItem('token',token); } const logoutHandler=()=>{ setToken(''); localStorage.removeItem('token'); } const contextValue={ token:token, isLoggedIn:userIsLoggedIn, logIn:loginHandler, logOut:logoutHandler }; return( <AuthContext.Provider value={contextValue}> {props.children} </AuthContext.Provider> ) } export const useAuth=()=>{ const context = React.useContext(AuthContext) if (context === undefined) { throw new Error('useAuth must be used within a AuthContextProvider') } return context } export default AuthContext;```Al usar el SDK de JavaScript de Firebase, no es necesario que usted mismo maneje los tokens, ya que el propio SDK los maneja bajo el capó.
Como puedes leer aquí
https://firebase.google.com/docs/reference/js/v8/firebase.auth.Auth#createuserwithemailand
Tras la creación exitosa de la cuenta de usuario, este usuario también iniciará sesión en su aplicación
Para mantener a su usuario conectado cuando cierre la página, consulte la sección de persistencia aquí
y también aquí
Básicamente, simplemente no intentes leer el token, se supone que está protegido.
Parece que UserCredential no tiene una propiedad uid(_tokenResponse). Mi mejor conjetura es que está buscando user.user.uid.
const user = userCredential.user;