使用 Flutter 在图像上手动设置 firebaseStorageDownloadTokens 上传到 Firebase 存储

Manually Setting a firebaseStorageDownloadTokens on image Upload to Firebase Storage with Flutter

我正在尝试使用以下内容将文件放入 Firebase 存储:

    final metadata = firebase_storage.SettableMetadata(
    customMetadata: {'firebaseStorageDownloadTokens': customToken});

    _uploadTask =
    _storage.ref().child(filePath).putFile(widget.file!, metadata);

我的控制台出现以下错误:

E/StorageException(6906):原因:java.io.IOException:{“错误”:{“代码”:400,“消息”:“不允许为 firebaseStorageDownloadTokens 设置自定义元数据”} }

将此作为错误和功能请求提交到插件站点,但与此同时,我只是偶尔写错了,因为这方面的文档并不详尽,我想我' d提交这里看看有没有人从客户端成功了

如果我不能从客户端执行它,我稍后会编写一个云函数,但由于这不是我正在做的高安全性事情......我有很多理由避免强制我的应用程序获取 downloadUrl....我的目标是创建一个可预测的 downloadUrl...很容易在云中完成,我知道,只是想从这里的客户端进行。

与一些人交谈后,客户不允许这样做。它必须通过云功能来完成。这是非常气馁的。原因如下:

任何人只要拥有图片 ID 和 downloadToken 就可以访问图片。这个想法是两者都很难猜到……因此有一点安全性。您可以为经过身份验证的用户将安全规则设置为 getDownloadUrl,从而通过隐藏图像名称、downloadToken 和位置来“限制”可见性。

通过手动设置 downloadToken,您会削弱“安全性”。

这是允许的,但是,您必须使用云函数来实现,在创建图像时触发,覆盖自动生成的 downloadToken。如果需要,请给我发送 DM 以寻求帮助。