我将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/