Firebase本地运行的功能未使用Firebase Admin SDK进行身份验证

时间:2018-05-20 22:24:57

标签: node.js firebase firebase-authentication google-cloud-functions firebase-admin

我可以在部署到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"
  }

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服务,您可能需要不同的身份验证过程。