从Google Functions访问Firestore-从插件获取元数据失败,并出现以下错误:无法刷新访问令牌

问题描述

我正在部署一个执行某些服务器计算并将结果写入同一项目的Firestore DB的google函数

我遵循方法并通过以下方式配置功能

const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp();

并使用以下命令访问Firestore数据库

admin.firestore().collection('COLLECTION_NAME').add({data: value});

IAM用户... @ gcf-admin-robot.iam.gserviceaccount.com拥有分配的Google Cloud Functions服务代理的角色。

我收到以下错误

Error: 500 undefined: Getting Metadata from plugin Failed with error: Could not refresh access token: Unsuccessful response status code. Request Failed with status code 500
     at Object.callErrorFromStatus (/workspace/node_modules/@grpc/grpc-js/build/src/call.js:30:26)
     at Object.onReceiveStatus (/workspace/node_modules/@grpc/grpc-js/build/src/client.js:175:52)
     at Object.onReceiveStatus (/workspace/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:341:141)
     at Object.onReceiveStatus (/workspace/node_modules/@grpc/grpc-js/build/src/client-interceptors.js:304:181)
     at Http2CallStream.outputStatus (/workspace/node_modules/@grpc/grpc-js/build/src/call-stream.js:116:74)
     at Http2CallStream.maybeOutputStatus (/workspace/node_modules/@grpc/grpc-js/build/src/call-stream.js:155:22)
     at Http2CallStream.endCall (/workspace/node_modules/@grpc/grpc-js/build/src/call-stream.js:141:18)
     at Http2CallStream.cancelWithStatus (/workspace/node_modules/@grpc/grpc-js/build/src/call-stream.js:457:14)
     at callStream.filterStack.sendMetadata.then (/workspace/node_modules/@grpc/grpc-js/build/src/channel.js:225:36)
     at process._tickCallback (internal/process/next_tick.js:68:7)
 Caused by: Error
     at WriteBatch.commit (/workspace/node_modules/@google-cloud/firestore/build/src/write-batch.js:415:23)
     at DocumentReference.create (/workspace/node_modules/@google-cloud/firestore/build/src/reference.js:283:14)
     at CollectionReference.add (/workspace/node_modules/@google-cloud/firestore/build/src/reference.js:2011:28)
     at exports.parseProduct.functions.region.https.onRequest (/workspace/index.js:55:56)
     at process._tickCallback (internal/process/next_tick.js:68:7)
   code: '500',details:
    'Getting Metadata from plugin Failed with error: Could not refresh access token: Unsuccessful response status code. Request Failed with status 
   Metadata: Metadata { internalRepr: Map {},options: {} },note:
    'Exception occurred in retry method that was not classified as transient'

我在做什么错了?

解决方法

对于任何看到上述错误消息的人。它(至少在这种情况下)连接到服务帐户的权限。 我正在调整一些权限,并停用了一些我认为不需要的帐户。

其中一个是“项目名称” @ appspot.gserviceaccount.com 重新激活它解决了我的问题。

如果Google在这种情况下显示更有意义的错误消息,那将是非常好的!

,

这似乎是内部问题,而不是您正在做的事情。快速搜索我在https://create-react-app.dev/docs/adding-custom-environment-variables/GitHub中发现了一个非常相似的问题。从这些链接中,我注意到它更多地是关于图书馆,我建议到达SO,因为他们可以检查环境的内部,因为他们可能在幕后发生一些奇怪的魔术。

相关问答

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