我正在使用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
4条答案
按热度按时间tmb3ates1#
你救了我!在其他地方,人们错误地说启用匿名身份验证是[auth/admin-restricted-operation]的正确解决方案。当然,这是错误的。
启用匿名身份验证一开始是可行的,所以每个人都对它竖起大拇指,但它之所以可行,是因为匿名身份验证不需要发送电子邮件和密码。当我们意识到我们无法使用注册时使用的电子邮件和密码登录时,麻烦就来了,因为我们只是启用了匿名身份验证,而没有解决实际问题。
真正的答案是我们没有正确发送电子邮件和密码,就像你的情况一样,所以电子邮件/密码认证说“不,只有管理员才能做那种魔术”。
ct3nt3jp2#
所以我解决了。。
我有
解释:
由于使用inputRef而不是ref,所以我发送的输入是(undefined,undefined),因此它对管理员是有限制的。
o7jaxewo3#
请检查createUserWithEmailAndPassword方法传入的参数是否正确。在我的例子中,我的回调函数没有接收任何要传递给setStateMethod的文本。我是这样使用我的代码的
ccrfmcuu4#
我认为你不能提供电子邮件和密码,当你调用注册(电子邮件,密码)功能从其他文件。