从 firebase 可调用函数写入 firestore,就好像它是 auth 上下文提供的用户一样

问题描述

在 firebase 可调用函数中,我们得到了一个方便的上下文参数,其中包括身份验证数据,包括 uid。我已经正确定义了我的 firestore 规则,这些规则基于登录用户工作。有没有办法使用这个上下文从服务器上写,就好像它是用户一样,所以规则适用?

一个简单的例子:

export const firestoreCreateDocumentOnCall = functions
  .region(...regions).https.onCall(async (data,context) => {
    try {
      const path = data.path as string;
      const docData = data.data as any;
      // ! This writes as admin,I would like as if it were the user provided by context !
      await admin.firestore().doc(path).set(docData);
      return;
    } catch(error) {
      console.error(`Error: ${error}`);
      return { error };
    }
  });

解决方法

从 Cloud Functions 中访问 Firestore 是通过 Admin SDK 进行的,该 SDK 以管理权限运行。无法通过 Admin SDK 以备用用户身份访问 Firestore。

我能想到的唯一替代方法是通过其 REST API 访问 Firestore,但我从未尝试过,而且它绝对不如使用 SDK 方便。

另见:

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...