javascript - 使用 Firebase 匿名身份验证,错误,无效 JSON
问题描述
最近尝试使用 Firebase 匿名登录时出现以下错误
{"error":{"code":400,"message":"ADMIN_ONLY_OPERATION","errors":[{"message":"ADMIN_ONLY_OPERATION","domain":"global","reason":"invalid"} ]}}
我正在调用的函数是文档中提供的函数
doSignInAnonymously = () => {
this.auth.signInAnonymously()
}
我不明白错误代码,因为错误 400 表示您的请求中的 JSON 无效:
检查 JSON 消息的格式是否正确并包含有效字段(例如,确保传入正确的数据类型)。
我正在使用 API 提供的功能,所以我不知道我怎么会错误地实现它,或者当它说时它到底意味着什么ADMIN_ONLY_OPERATION
,为什么匿名登录与管理员有任何关系?
是否有人对此类错误有任何经验,或者在我使用该功能时可以看到任何明显的错误?
我的 firebase.js 文件,其中包含所有身份验证功能。
import app from 'firebase/app'
import 'firebase/auth'
import 'firebase/database'
import * as firebase from 'firebase';
const config = {
apiKey: process.env.REACT_APP_API_KEY,
authDomain: process.env.REACT_APP_AUTH_DOMAIN,
databaseURL: process.env.REACT_APP_DATABASE_URL,
projectId: process.env.REACT_APP_PROJECT_ID,
storageBucket: process.env.REACT_APP_STORAGE_BUCKET,
messagingSenderId: process.env.REACT_APP_MESSAGING_SENDER_ID,
}
class Firebase {
constructor() {
app.initializeApp(config);
/* Helper */
this.fieldValue = app.firestore.FieldValue;
this.emailAuthProvider = app.auth.EmailAuthProvider;
/* Firebase APIs */
this.auth = app.auth();
this.db = app.firestore();
}
// *** Auth API ***
// eslint-disable-next-line max-len
doCreateUserWithEmailAndPassword = (email, password) => this.auth.createUserWithEmailAndPassword(email, password)
// eslint-disable-next-line max-len
doSignInWithEmailAndPassword = (email, password) => this.auth.signInWithEmailAndPassword(email, password)
doSignInAnonymously = () => {
this.auth.signInAnonymously()
}
调用现场的代码:
<Button
variant="contained"
color="primary"
onClick={() => firebase
.doSignInAnonymously()
.then(({ user }) => {
localStorage.setItem(process.env.REACT_APP_LOCAL_STORAGE, JSON.stringify(user))
history.push(ROUTES.USER)
})
.catch(({ message }) => setErrMessage(message))
}
>
Continue As Guest
</Button>
- 我尝试删除以下行,因为错误与格式错误的 JSON 有关,但这似乎没有帮助。
localStorage.setItem(process.env.REACT_APP_LOCAL_STORAGE, JSON.stringify(user))
解决方案
转到Firebase 控制台并在身份验证服务的登录方法选项卡下检查您的登录提供程序,并确保启用匿名。
推荐阅读
- python - 如何在 python 中编写文件而不将其加载到内存中?
- python - 从 MPI 中排除 Python 语法的某些部分
- javascript - 如何更新一个端点上的两个实体?
- android - android 故障:Android 10 的 xml 中的颜色
- bash - 如何在bash脚本中迭代两个变量?
- react-hooks - 如何设置对象值数组的状态并在单击时将计数切换为 1 或 2
- python - 获取一段时间的均方根误差 (RMSE)
- go - 为什么我不能像这样直接调用map成员的方法
- python - 使用 python 抓取谷歌精选片段
- sql - SQL选择n个随机组并返回所有记录