Dan*_*mal 6 node.js google-cloud-platform
我正在使用带有 Node 的 firebase 云函数来发送由实时数据库事件触发的推送通知。
我收到了来自 Google 的这封电子邮件,告诉我更新使用 v1 端点的请求。该电子邮件指出:
我们的记录显示,您拥有的 App Engine 应用程序或 Cloud Functions 项目仍在调用 App Engine 和 Cloud Functions 元数据服务器的 pre-GA v0.1 和 v1beta1 端点。
确定发出这些请求的项目、应用程序和功能。在此消息的附件中,您将找到您拥有的在 2019 年 9 月 26 日至 2019 年 11 月 1 日期间向 v0.1 和 v1beta1 元数据服务器端点发出请求的项目、应用程序和功能的列表。 评论:我知道它是什么项目是。
将您的 Google 客户端库升级到最新版本。有关需要更新的 Google SDK 列表,请参阅支持的库版本。 评论:这个我不明白。我需要这样做吗?
如果您向旧版元数据服务器端点发出直接请求:为确保对您的实例的干扰最小,请在 2020 年 4 月 30 日之前将您的请求更新到 v1 端点。 评论:我不知道我是否在发出直接请求
如何从 v1beta1 请求升级到 v1 请求:如果您直接向 v1beta1 URI 发出请求,请按照以下步骤升级到 v1 URI: 将请求 URI 更改为使用 v1 而不是 v1beta1 将此标头添加到您的请求中: “Metadata-Flavor: Google” 例如,如果您当前正在发出此请求: curl " http://metadata.google.internal/computeMetadata/v1beta1/instance/id " 升级到 v1,如下所示: curl " http:// /metadata.google.internal/computeMetadata/v1/instance/id” -H "Metadata-Flavor: Google" 如何从 v0.1 请求升级到 v1 请求:如果您直接向 v0.1 URI 发出请求,请按照以下步骤升级到 v1 URI:更改请求使用 v1 而不是 v0.1 的 URI 将此标头添加到您的请求中:“Metadata-Flavor: 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 " Metadata-Flavor: 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);
Run Code Online (Sandbox Code Playgroud)
});
Firebase 版本:
"firebase-admin": "^8.0.0",
"firebase-functions": "^3.2.0"
Run Code Online (Sandbox Code Playgroud)
gui*_*ere 12
如果您从未http://metadata.google.internal/...从您的代码或脚本中对URL执行任何查询,那将不会有任何改变!
如果您使用此 URL,请粘贴您的代码,我们可以为您提供帮助。
更新
感谢您的详细信息,我在firebase-admin-node github project文件src/auth/credential.ts中发现了问题。直到版本 8.1.0,第 32 行的值是:
const GOOGLE_METADATA_SERVICE_PATH = '/computeMetadata/v1beta1/instance/service-accounts/default/token';
Run Code Online (Sandbox Code Playgroud)
使用8.2.0以上版本解决这个问题
| 归档时间: |
|
| 查看次数: |
1036 次 |
| 最近记录: |