javascript createUserWithEmailAndPassword后出现Firebase错误auth/admin-restricted-operation

q35jwt9p  于 2023-06-20  发布在  Java
关注(0)|答案(4)|浏览(107)

我正在使用Firebase:尝试使用电子邮件注册后出现错误(auth/admin-restricted-operation)。(在我的项目设置中,我允许创建使用电子邮件的用户。)这可能是我的项目设置中的一些东西?我在互联网上搜索解决这个问题,就像几个小时,所以请帮助,我真的是新的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

tmb3ates

tmb3ates1#

你救了我!在其他地方,人们错误地说启用匿名身份验证是[auth/admin-restricted-operation]的正确解决方案。当然,这是错误的。
启用匿名身份验证一开始是可行的,所以每个人都对它竖起大拇指,但它之所以可行,是因为匿名身份验证不需要发送电子邮件和密码。当我们意识到我们无法使用注册时使用的电子邮件和密码登录时,麻烦就来了,因为我们只是启用了匿名身份验证,而没有解决实际问题。
真正的答案是我们没有正确发送电子邮件和密码,就像你的情况一样,所以电子邮件/密码认证说“不,只有管理员才能做那种魔术”。

    • 我们必须检查我们的登录数据**。这就是答案非常感谢!
ct3nt3jp

ct3nt3jp2#

所以我解决了。。

  • 我忘了加上
export const auth = getAuth(***app***);

我有

export const auth = getAuth();
  • 我用inputRef代替了form中的ref

解释:
由于使用inputRef而不是ref,所以我发送的输入是(undefined,undefined),因此它对管理员是有限制的。

o7jaxewo

o7jaxewo3#

请检查createUserWithEmailAndPassword方法传入的参数是否正确。在我的例子中,我的回调函数没有接收任何要传递给setStateMethod的文本。我是这样使用我的代码的

onChangeText={() => setEmail()
    • 我做了什么?* * 只需像这样将文本传递给方法:
onChangeText={(text) => setEmail(text)
ccrfmcuu

ccrfmcuu4#

我认为你不能提供电子邮件和密码,当你调用注册(电子邮件,密码)功能从其他文件。

相关问题