我将Firebase Cloud函数与Node结合使用,以发送由实时数据库事件触发的推送通知。

我收到了来自Google的电子邮件,告诉我更新我的请求以使用v1端点。电子邮件中指出:

我们的记录表明,您拥有带有App Engine应用程序或Cloud Functions的项目,这些项目仍在调用App Engine和Cloud Functions元数据服务器的GA v0.1和v1beta1之前的终结点。

确定提出这些请求的项目,应用程序和功能。
随附于此消息,您将找到在2019年9月26日至2019年11月1日期间向v0.1和v1beta1元数据服务器端点发出请求的项目,应用程序和功能的列表。
评论:我知道这是什么项目。

将您的Google客户端库升级到最新版本。请参阅支持的库版本以获取需要更新的Google SDK列表。
评论:我不明白。我需要这样做吗?

如果您直接向旧版Metadata Server端点发出请求,请执行以下操作:
为确保实例中断最小,请在2020年4月30日之前将您的请求更新到v1端点。
评论:我不知道我是否在直接发出请求

如何从v1beta1请求升级到v1请求:
如果您直接向v1beta1 URI发出请求,请按照以下步骤升级到v1 URI:
将请求URI更改为使用v1而不是v1beta1
将此 header 添加到您的请求中:“元数据香料:Google”
例如,如果您当前正在发出此请求:
curl “http://metadata.google.internal/computeMetadata/v1beta1/instance/id
升级到v1,如下所示:
curl“http://metadata.google.internal/computeMetadata/v1/instance/id” -H“元数据:Google”
如何从v0.1请求升级到v1请求:
如果您直接请求v0.1 URI,请按照以下步骤升级到v1 URI:
将请求URI更改为使用v1而不是v0.1
将此 header 添加到您的请求中:“元数据香料:Google”
使用以下说明将v0.1属性映射到v1属性
例如,如果您当前正在发出此请求:
curl “http://metadata.google.internal/0.1/meta-data/instance-id
升级到v1,如下所示:
curl“http://metadata.google.internal/computeMetadata/v1/instance/id” -H“元数据:Google”
重新部署您的应用程序
以上步骤将需要另一应用程序部署才能生效。

我搜索了Google Cloud支持Webb(如电子邮件中的建议),然后在SO上搜索。但是我不知道该怎么做。

请记住我是一个新手。任何帮助或建议,我们将不胜感激!

更新
显然,此功能已向v0.1和v1beta1元数据服务器端点发出了请求:

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

exports.sendErrorInputWasSentPush = functions.database.ref('/errorInputs/{barcode}/{date}').onWrite((change, context) => {

const barcode = context.params.barcode
const dataAfter = change.after.val()
const input = dataAfter.input
const pushIDs = [
    "",
    ""]

console.log(`Error input submitted.`)

const payload = {
    notification: {
        title: '',
        body: '',
        sound: "default"
    }
};

const options = {
    priority: "high",
    timeToLive: 60 * 60 * 24
};

return admin.messaging().sendToDevice(pushIDs, payload, options);

});

Firebase版本:
"firebase-admin": "^8.0.0",
"firebase-functions": "^3.2.0"

最佳答案

如果您从不对代码或脚本中的http://metadata.google.internal/... URL执行任何查询,则不会改变任何内容!

如果您使用此URL,请粘贴您的代码,我们可以为您提供帮助。

更新

由于您的详细信息,我在 src/auth/credential.ts firebase-admin-node github project文件中找到了问题。在版本8.1.0之前,第32行的值为:

const GOOGLE_METADATA_SERVICE_PATH = '/computeMetadata/v1beta1/instance/service-accounts/default/token';

使用8.2.0或更高版本来解决此问题

关于node.js - 如何更新Google Cloud Platform旧版GAE和GCF元数据服务器端点,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/58777850/

10-16 16:03