Firebase Cloud Firestore 触发器 context.auth 始终为 null

Dan*_*idi 5 node.js firebase firebase-authentication google-cloud-functions google-cloud-firestore

我正在使用 Firebase 和 Cloud Firestore 构建一个群组应用程序,用户应该能够在其中创建群组并向其中添加成员。

当用户创建一个组时,我想要一个云触发器在创建组后将该用户添加到组的成员列表中。触发器看起来像这样:

exports.addCreatorAsAdmin = firestore
  .document('groups/{group}')
  .onCreate((snap, context) => {
    if (context.auth == null) { return unauthorizedError() }
    const path = `groups/${context.params.group}/members/${context.auth.uid}`;
    return db.doc(path).create({});
  });
Run Code Online (Sandbox Code Playgroud)

当我运行应用程序、登录用户并创建团队时,该功能被正确触发。但是,我总是遇到未经授权的错误,这意味着它context.auth为空。

TLDR;用户已正确登录,但触发器未经授权。谁能帮我吗?

Dou*_*son 6

Cloud Firestore 目前不支持context.auth确定进行更改的用户。正如您从API 文档中看到的:

此字段仅为实时数据库触发器和可调用函数填充。对于未经身份验证的用户,此字段为空。对于不提供用户信息的 Firebase 管理员用户和事件类型,此字段不存在。

你可以做的却是让用户写自己的UID到文档中的一个字段,并验证安全规则中所描述这篇文章