FirebaseError: Firebase: Error (auth/admin-restricted-operat



我正在开发一个react应用程序。我正在尝试创建一个新用户的电子邮件和密码(firebase),但它一直显示此消息

FirebaseError: Firebase: Error (auth/admin-restricted-operation).
at createErrorInternal (assert.ts:136:1)
at _fail (assert.ts:65:1)
at _performFetchWithErrorHandling (index.ts:177:1)
at async _performSignInRequest (index.ts:195:1)
at async createUserWithEmailAndPassword (email_and_password.ts:230:1)
at async handleAdd (New.jsx:69:1)

下面是我的New。jsx代码

import "./new.scss"
import Navbar from "../../components/navbar/Navbar"
import Sidebar from "../../components/sidebar/Sidebar"
import DriveFolderUploadOutlinedIcon from '@mui/icons-material/DriveFolderUploadOutlined';
import { useEffect, useState } from "react";
import {addDoc,collection,doc,serverTimestamp,setDoc,} from "firebase/firestore";
import { createUserWithEmailAndPassword } from "firebase/auth";
import { auth, db, storage } from "../../firebase";
import { ref, uploadBytesResumable, getDownloadURL } from "firebase/storage";
import { useNavigate } from "react-router-dom";
const New = ({ inputs, title }) => {
const [file, setFile] = useState("");
const [data, setData] = useState({});
const [per, setPerc] = useState(null);
const navigate = useNavigate()
useEffect(() => {
const uploadFile = () => {
const name = new Date().getTime() + file.name;
console.log(name);
const storageRef = ref(storage, file.name);
const uploadTask = uploadBytesResumable(storageRef, file);
uploadTask.on(
"state_changed",
(snapshot) => {
const progress =
(snapshot.bytesTransferred / snapshot.totalBytes) * 100;
console.log("Upload is " + progress + "% done");
setPerc(progress);
switch (snapshot.state) {
case "paused":
console.log("Upload is paused");
break;
case "running":
console.log("Upload is running");
break;
default:
break;
}
},
(error) => {
console.log(error);
},
() => {
getDownloadURL(uploadTask.snapshot.ref).then((downloadURL) => {
setData((prev) => ({ ...prev, img: downloadURL }));
});
}
);
};
file && uploadFile();
}, [file]);
console.log(data);
const handleInput = (e) => {
const id = e.target.id;
const value = e.target.value;
setData({ ...data, [id]: value });
};
const handleAdd = async (e) => {
e.preventDefault();
try {
const res = await createUserWithEmailAndPassword(
auth,
data.email,
data.password
);
await setDoc(doc(db, "owners", res.owner.uid), {
...data,
timeStamp: serverTimestamp(),
});
navigate(-1)
} catch (err) {
console.log(err);
}
};

return (
<div className="new">
<Sidebar />
<div className="newContainer">
<Navbar />
<div className="top">
<h1>{title}</h1>
</div>
<div className="bottom">
<div className="left">
<img
src={
file
? URL.createObjectURL(file)
: "https://icon-library.com/images/no-image-icon/no-image-icon-0.jpg"
}
alt=""
/>
</div>
<div className="right">
<form onSubmit={handleAdd}>
<div className="formInput">
<label htmlFor="file">
Image: <DriveFolderUploadOutlinedIcon className="icon" />
</label>
<input
type="file"
id="file"
onChange={(e) => setFile(e.target.files[0])}
style={{ display: "none" }}
/>
</div>
{inputs.map((input) => (
<div className="formInput" key={input.id}>
<label>{input.label}</label>
<input
id={input.id}
type={input.type}
placeholder={input.placeholder}
onChange={handleInput}
required
/>
</div>
))}
<button disabled={per !== null && per < 100} type="submit">
Submit
</button>
</form>
</div>
</div>
</div>
</div>
);
};
export default New;

这是我的firebase.js

import { initializeApp } from "firebase/app";
import { getAuth } from "firebase/auth";
import { getFirestore } from "firebase/firestore";
import { getStorage } from "firebase/storage";
const firebaseConfig = {
apiKey: process.env.REACT_APP_FIREBASE_KEY,
authDomain: process.env.REACT_APP_FIREBASE_AUTH_DOMAIN,
projectId: process.env.REACT_APP_PROJECT_ID,
storageBucket: process.env.REACT_APP_STORAGE_BUCKET,
messagingSenderId: process.env.REACT_APP_MESSAGE,
appId: process.env.REACT_APP_ID,
measurementId: process.env.REACT_APP_MEASUREMENT_ID,
};
//Initialize Firebase
const app = initializeApp(firebaseConfig);
export const db = getFirestore(app);
export const auth = getAuth();
export const storage = getStorage(app);
  • 我已启用电子邮件/密码提供程序
  • 当我从firebase导入createUserWithEmailAndPassword时,它开始不工作

有人知道如何解决这个问题吗?

它将存储和创建新用户到firebase,没有错误消息显示

问题在您的firebase.js文件中:

export const auth = getAuth();

添加应用

export const auth = getAuth(app);

最新更新