【问题标题】:Can't access to Firebase Storage in Flutter无法在 Flutter 中访问 Firebase 存储
【发布时间】:2021-02-19 22:07:42
【问题描述】:

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

`
  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):请求没有身份验证令牌

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

另外,通过公开设置我的文件和文件夹,我不需要对我的用户进行身份验证

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

【问题讨论】:

    标签: android firebase flutter storage


    【解决方案1】:

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

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

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

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

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

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

    【讨论】:

    • 感谢您的回复,正如我所说,我通过允许读取、写入公开设置了所有文件; ,同样在我的用例中,我不需要验证我的用户来使用我的应用程序
    【解决方案2】:

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

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

    【讨论】:

      猜你喜欢
      • 2018-11-27
      • 2017-09-28
      • 2017-07-03
      • 2021-09-09
      • 2021-04-27
      • 2022-01-16
      • 2020-01-02
      • 1970-01-01
      相关资源
      最近更新 更多