无法在 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:请求没有授权令牌”是调试此问题的关键。

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

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

我会检查您的登录代码并确保它在任何存储操作完成之前成功完成。 如果您确定您的授权代码是正确的,请尝试 resetting data on the device 这样就没有保存的状态可能会弄乱应用程序的授权信息。

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

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

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

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