【问题标题】:Firebase Cloud Firestore trigger context.auth is always null [duplicate]Firebase Cloud Firestore 触发器 context.auth 始终为空 [重复]
【发布时间】:2020-02-18 05:37:24
【问题描述】:

我正在使用 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({});
  });

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

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

【问题讨论】:

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


【解决方案1】:

Cloud Firestore 目前不支持context.auth 确定哪个用户进行了更改。从API documentation可以看到:

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

您可以改为让用户将其 UID 写入文档的一个字段,并使用this post 中所述的安全规则进行验证。

【讨论】:

  • 谢谢,我错过了那部分!我想我只会在创建有效负载中添加一个包含该用户的“成员”数组。
  • 如果您有时间,请将此答案标记为正确。
  • 嗯,我以为我做到了,但似乎我只是赞成它。固定!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-06-06
  • 2018-10-16
  • 2018-03-27
  • 1970-01-01
  • 2018-10-17
  • 2019-10-12
  • 2021-05-04
相关资源
最近更新 更多