Recibo un error de Firebase: Error (auth/admin-restricted-operation) después de intentar registrarme con el correo electrónico. (En la configuración de mi proyecto, tengo la creación de usuarios con correo electrónico permitido). ¿Podría ser algo en la configuración de mi proyecto? Estuve buscando en Internet para resolver ese problema durante horas, así que por favor ayuda, soy realmente nuevo en Firebase.
import React, {useContext, useState, useEffect} from 'react' import { auth } from '../firebase'; import { createUserWithEmailAndPassword, onAuthStateChanged } from "firebase/auth"; const AuthContext = React.createContext() export function useAuth(){ return useContext(AuthContext) } export function AuthProvider({children}) { const [currentUser, setUser] = useState(); function signup(email, password){ return createUserWithEmailAndPassword(auth, email, password); } useEffect(() => { const unsubscribe = onAuthStateChanged(auth, user => { setUser(user) }) return unsubscribe }, []) const value = { currentUser, signup } return ( <AuthContext.Provider value={value}> {children} </AuthContext.Provider> ) } import {React, useRef, setError, useState} from 'react' import { useAuth } from '../contexts/AuthContext'; function SignUp() { const emailRef = useRef(); const passwordRef = useRef(); const passwordConfirmRef = useRef(); const {signup} = useAuth(); const handleSubmit = async (e) => { e.preventDefault() await signup(emailRef.value, passwordRef.value) } return ( <div> <form onSubmit={handleSubmit}> <label for="email">Email</label> <input type="text" id="email" inputRef={emailRef} required></input> <label for="password">Password</label> <input type="password" id="password" inputRef={passwordRef} required></input> <label for="email">Pasword Confirmation</label> <input type="text" id="email" inputRef={passwordConfirmRef} required></input> <button type="submit" >Sign Up</button> </form> </div> ) } export default SignUp import * as firebase from "firebase/app" import { getAuth } from "firebase/auth"; const app = firebase.initializeApp({ ... }) export const auth = getAuth() export default app¡Me salvaste! En todas partes, las personas dicen incorrectamente que habiliten la autenticación anónima como la solución correcta para [auth/admin-restricted-operation]. Por supuesto, eso está mal.
Habilitar la autenticación anónima funciona al principio, por lo que todos lo aprueban, pero solo funciona porque la autenticación anónima no requiere que se envíe un correo electrónico y una contraseña. El problema surge más tarde cuando nos damos cuenta de que no podemos iniciar sesión con el correo electrónico y la contraseña que usamos para registrarnos cuando simplemente habilitamos la autenticación anónima sin abordar el problema real.
La respuesta real es que no enviamos el correo electrónico y la contraseña correctamente, como en su caso, por lo que la autenticación de correo electrónico/contraseña dice "no, solo los administradores pueden hacer ese tipo de magia".
Tenemos que comprobar nuestros datos de inicio de sesión. Esa es la respuesta. ¡Muchas gracias!
Entonces uhh eso lo soluciono...
Olvidé agregar
export const auth = getAuth( aplicación );
Yo Tuve
exportar const auth = getAuth();
y usé inputRef en lugar de ref en forma
Explicando:
Estaba restringido para los administradores debido a que la entrada que estaba enviando era (indefinida, indefinida) debido al uso de inputRef en lugar de ref.