繁体   English   中英

无法访问 Flutter 中的 Firebase 存储

[英]Can't access to Firebase Storage in Flutter

我想访问我的 firebase 存储中的一个文件夹,所以我使用这个 flutter 代码来做到这一点

`
  var storageRef =
     firebase_storage.FirebaseStorage.instance.ref('test');
  storageRef.listAll().then((value) {
     value.items.forEach((element) {
   print(element.getDownloadURL().toString());`
  });`
});`

我通过此代码将所有文件和文件夹设置为公开

allow read, write: if true;

但我在终端收到这条消息

W/StorageUtil(28332):请求没有授权令牌

我认为我似乎必须对我的用户进行身份验证,但在我的用例中我不必这样做

另外通过公开设置我的文件和文件夹我不需要验证我的用户

我的代码或逻辑有什么问题?

消息“W/NetworkRequest: no auth token for request”是调试此问题的关键。

此日志消息意味着 Firebase 存储在当前上下文中没有看到任何登录。 这包括匿名登录。 这意味着没有将授权传递给后端,唯一允许这样做的方法是如果您将规则设置为完全开放(公共访问),这是不推荐的(见下文)。

 //this sets completely open access to your data
 allow read, write;

我会查看您用于登录的代码,并确保它在任何存储操作完成之前成功完成。 如果您确定您的授权码是正确的,请尝试重置设备上的数据,以便没有保存的 state 可能会弄乱应用程序的授权信息。

您可能需要在 firebase 控制台中检查您的存储规则。 默认情况下,它设置为只允许经过身份验证的用户,像这样

allow read, write: if request.auth != null;

我找到了解决问题的方法,首先我在终端“W/StorageUtil(28332): no auth token for request”中收到的消息不是错误,而是调试消息,所以我犯的错误是我打印getDownloadURL() 没有等待语句,所以我将 forEach 循环中的代码更改为这样

var x = await element.getDownloadURL(); print(x);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM