我可以使用firebase-admin通过nodejs将文件上传到我的Firebase存储桶中,但是当我进入Firebase UI时,无法打开文件。我注意到通过firebase UI上传的文件将自动生成一个访问令牌,但是对于通过nodejs上传的文件则没有。
我已经尝试了几种方法,例如设置带有下载令牌的元数据以及在文件上传后将其公开。没有一个起作用。
如何通过API调用生成访问令牌,而不必转到hi并单击为每个上传的文件生成令牌?
答案 0 :(得分:3)
要进一步阐明@ Rawan-25的答案,您想要的是:
bucket.upload(filename, {
destination,
metadata: {
metadata :{
firebaseStorageDownloadTokens: uuidv4(),
}
},
})
这是根据this Github问题。
答案 1 :(得分:3)
截至2020年7月的完整答案:
将文件上传到Firebase Cloud Storage(又名Google Cloud Storage)时,可以生成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控制台单击新上载的文件,您的文件上应有一个蓝色的可单击链接。您还可以在预览的正下方文件位置下找到访问令牌。
例如:
答案 2 :(得分:2)
我使用以下命令,它运行正常
const uuidv4 = require('uuid/v4');
const uuid = uuidv4();
metadata: { firebaseStorageDownloadTokens: uuid }
答案 3 :(得分:0)
当前无法使用Firebase Admin SDK生成访问令牌。您必须使用其中一个客户端SDK以及StorageReference对象上的getDownloadUrl方法来执行此操作。该令牌仅真正用于Firebase客户端应用程序。
但是,您无法在Firebase控制台中加载使用Admin SDK上传的文件的预览是一个已知问题,而不是控制台的预期工作方式。 Firebase团队知道这一点,但是您仍然应该file a bug report anyway with Firebase support知道他们知道您受到此问题的影响。
答案 4 :(得分:0)
经过广泛的搜索后,我设法通过引用另一个堆栈溢出帖子大声笑的reddit帖子获得了答案。
请查看答案#2! Get Download URL from file uploaded with Cloud Functions for Firebase