如何为上传到 firebase 存储的文件生成访问令牌?
How can I generate access token to file uploaded to firebase storage?
我可以使用 firebase-admin 通过 nodejs 将文件上传到我的 firebase 存储桶,但是当我转到 firebase 时 UI 我无法打开该文件。我注意到通过 firebase UI 上传的文件将自动生成一个访问令牌,但对于通过 nodejs 上传的文件则没有。
我已经尝试了几种方法,例如使用 downloadtokens 设置元数据并在上传后制作文件 public。 None 有效。
如何通过 API 调用生成访问令牌,而不必去 hi 并单击为每个上传的文件生成令牌?
目前无法使用 Firebase Admin SDK 生成访问令牌。您必须使用其中一个客户端 SDK 以及 StorageReference 对象上的 getDownloadUrl 方法来完成此操作。该令牌仅适用于 Firebase 客户端应用程序。
但是,您无法在 Firebase 控制台中为使用 Admin SDK 上传的文件加载预览是一个已知问题,而不是控制台的预期工作方式。 Firebase 团队知道这一点,但您仍然应该 file a bug report anyway with Firebase support 让他们知道您受到了该问题的影响。
经过广泛搜索后,我设法通过引用另一个堆栈溢出的 reddit post 得到了答案 post 哈哈。
请看答案#2!
我使用下面的命令,它运行良好
const uuidv4 = require('uuid/v4');
const uuid = uuidv4();
metadata: { firebaseStorageDownloadTokens: uuid }
为了进一步阐明@Rawan-25 的回答,您需要的是:
bucket.upload(filename, {
destination,
metadata: {
metadata :{
firebaseStorageDownloadTokens: uuidv4(),
}
},
})
这是每个 this Github 问题。
截至 2020 年 7 月的完整答案:
将文件上传到 Firebase 云存储(又名 Google 云存储)时,可以生成一个 uuid 并将其用作令牌
首先导入这个包:
const uuidv4 = require('uuid/v4');
或
const { v4: uuidv4 } = require('uuid');
然后,在上传文件之前生成一个唯一的id:
const uuid = uuidv4();
最后,上传您的文件:
最重要的是嵌入
metadata: { firebaseStorageDownloadTokens: uuid, }
在上传函数的元数据字段中
await admin.storage().bucket().upload(filePath, {
destination: thumbFilePathForUpload,
metadata: {
metadata: {
firebaseStorageDownloadTokens: uuid,
}
},
});
为了检查它是否有效,请直接从 Firebase 控制台点击新上传的文件,您的文件旁边应该有一个蓝色的可点击 link。您还可以在 文件位置 下找到访问令牌,就在预览下方。
例如:
我可以使用 firebase-admin 通过 nodejs 将文件上传到我的 firebase 存储桶,但是当我转到 firebase 时 UI 我无法打开该文件。我注意到通过 firebase UI 上传的文件将自动生成一个访问令牌,但对于通过 nodejs 上传的文件则没有。
我已经尝试了几种方法,例如使用 downloadtokens 设置元数据并在上传后制作文件 public。 None 有效。
如何通过 API 调用生成访问令牌,而不必去 hi 并单击为每个上传的文件生成令牌?
目前无法使用 Firebase Admin SDK 生成访问令牌。您必须使用其中一个客户端 SDK 以及 StorageReference 对象上的 getDownloadUrl 方法来完成此操作。该令牌仅适用于 Firebase 客户端应用程序。
但是,您无法在 Firebase 控制台中为使用 Admin SDK 上传的文件加载预览是一个已知问题,而不是控制台的预期工作方式。 Firebase 团队知道这一点,但您仍然应该 file a bug report anyway with Firebase support 让他们知道您受到了该问题的影响。
经过广泛搜索后,我设法通过引用另一个堆栈溢出的 reddit post 得到了答案 post 哈哈。
请看答案#2!
我使用下面的命令,它运行良好
const uuidv4 = require('uuid/v4');
const uuid = uuidv4();
metadata: { firebaseStorageDownloadTokens: uuid }
为了进一步阐明@Rawan-25 的回答,您需要的是:
bucket.upload(filename, {
destination,
metadata: {
metadata :{
firebaseStorageDownloadTokens: uuidv4(),
}
},
})
这是每个 this Github 问题。
截至 2020 年 7 月的完整答案:
将文件上传到 Firebase 云存储(又名 Google 云存储)时,可以生成一个 uuid 并将其用作令牌
首先导入这个包:
const uuidv4 = require('uuid/v4');
或
const { v4: uuidv4 } = require('uuid');
然后,在上传文件之前生成一个唯一的id:
const uuid = uuidv4();
最后,上传您的文件:
最重要的是嵌入
metadata: { firebaseStorageDownloadTokens: uuid, }
在上传函数的元数据字段中
await admin.storage().bucket().upload(filePath, {
destination: thumbFilePathForUpload,
metadata: {
metadata: {
firebaseStorageDownloadTokens: uuid,
}
},
});
为了检查它是否有效,请直接从 Firebase 控制台点击新上传的文件,您的文件旁边应该有一个蓝色的可点击 link。您还可以在 文件位置 下找到访问令牌,就在预览下方。
例如: