我可以在部署到Firebase项目时成功运行此代码。
const admin = require('firebase-admin');
const functions = require('firebase-functions');
admin.initializeApp();
exports.createUser = functions.https.onRequest((req, res) => {
admin.auth().createUser({ uid: req.body.id })
.then(user => {
return res.send(user);
})
.catch(err => {
return res.status(422).send({ error: err });
});
});
这是Firebase的回复:
{
"uid": "abcdefg1234",
"emailVerified": false,
"disabled": false,
"metadata": {
"lastSignInTime": null,
"creationTime": "Sun, 20 May 2018 22:22:55 GMT"
},
"tokensValidAfterTime": "Sun, 20 May 2018 22:22:55 GMT",
"providerData": []
}
但是,当我使用firebase serve
运行本地函数并调用相同的函数(使用Postman)时,我遇到了权限错误:
{
"error": {
"code": "auth/insufficient-permission",
"message": "Credential implementation provided to initializeApp() via the \"credential\" property has insufficient permission to access the requested resource. See https://firebase.google.com/docs/admin/setup for details on how to authenticate this SDK with appropriate permissions."
}
}
在本地运行的Firebase Functions实例上,firebase-admin的身份验证设置是否与在正常的生产Firebase服务器上运行时的身份验证设置不同?
规格:
"dependencies": {
"firebase-admin": "~5.12.0",
"firebase-functions": "^1.0.1"
}
答案 0 :(得分:1)
进一步审核:
https://firebase.google.com/docs/functions/local-emulator
如果您希望功能测试与Google API或其他相互作用 通过Firebase Admin SDK的Firebase API,您可能需要设置管理员 凭证
Cloud Firestore和实时数据库触发器已经足够了 凭证,不需要额外的设置。
所有其他API,包括Firebase API,例如身份验证和FCM 或者Google API,例如Cloud Translation或Cloud Speech,需要 本节中描述的设置步骤。无论你是否适用,这都适用 使用函数shell或firebase服务。
因此,问题的答案似乎是"是",根据您访问的Firebase服务,您可能需要不同的身份验证过程。