Google cloud firestore HTTP云函数和事件驱动云函数能否访问Firestore中的同一集合?

Google cloud firestore HTTP云函数和事件驱动云函数能否访问Firestore中的同一集合?,google-cloud-firestore,google-cloud-functions,Google Cloud Firestore,Google Cloud Functions,我有一个事件驱动的云函数(用Node.js编写),每当存储桶发生变化时,它就会在Firestore中创建视频集合。但是当我试图从HTTP函数访问相同的数据时,API抛出了一个401未经授权的错误 HTTP函数: exports.getVideos = (req, res) => { db.collection('video').get().then(querySnapshot => { return res.status(200).json({

我有一个事件驱动的云函数(用Node.js编写),每当存储桶发生变化时,它就会在Firestore中创建
视频
集合。但是当我试图从HTTP函数访问相同的数据时,API抛出了一个401未经授权的错误

HTTP函数:

exports.getVideos = (req, res) => {
   db.collection('video').get().then(querySnapshot =>  {
        return res.status(200).json({
            videos: querySnapshot.docs.map(doc => doc.data()),
            total: querySnapshot.size
          });
      })
      .catch(error => {
        functions.logger.error('Error getting video details: ', error);
        return res.status(500).json({ error });
      });
  };
API响应:401未经授权

<html>

<head>
    <meta http-equiv="content-type" content="text/html;charset=utf-8">
    <title>401 Unauthorized</title>
</head>

<body text=#000000 bgcolor=#ffffff>
    <h1>Error: Unauthorized</h1>
    <h2>Your client does not have permission to the requested URL <code>/video/get-videos</code>.</h2>
    <h2></h2>
</body>

</html>

我没有看到代码方面的任何问题,所以我想知道这是什么根源。

可能是使用不同的服务帐户执行不同的云功能。其中一个具有必需的IAM角色/权限,而另一个则没有


另一个选项-您是否可以检查所有这些都发生在一个GCP项目中,并且两个云功能都应该与一个(且相同)firestore集合一起工作?

如何称呼此HTTPS云功能?哪个网址?此外,您还可以共享云功能的全部代码。我们没有看到任何地方可以使用
函数.https
来创建处理HTTP事件的函数。@RenaudTarnec此函数未使用Firebase SDK。这是一个普通的GCP云函数。你怎么知道这个函数实际上正在被调用?你有云函数的日志证明它是正确的吗?你确定你公开了该功能,以便可以从互联网上的任何地方访问它吗?我认为这与Firestore没有任何关系-您可以简单地删除查询以进行更好的调试;我和道格在一起。我怀疑问题可能在于调用的“Web客户端与云函数对话”部分,而不是“云函数与Firestore对话”部分。你能补充一些关于如何称呼它的额外细节吗?也许首先让你的函数返回一些硬编码的占位符JSON。@DougStevenson谢谢你提出这个问题。这正是问题所在。