首页 > 解决方案 > Flutter Firebase 存储返回 FirebaseApiNotAvailableException

问题描述

从 Flutter 应用程序中,我试图确定 Firebase 存储中图像的下载 URL。对于测试,应用中没有应用身份验证安全规则(设置为“允许读取、写入”)或应用身份验证。使用以下方法时,

Future<String> _getDownloadImageUrl(String folder, String filename) async {
  String childpath = "$folder/$filename";
  StorageReference ref = FirebaseStorage.instance.ref().child(childpath);
  Future<String> durl = await ref.getDownloadURL();
  return durl;
}

我收到以下错误(在 Android 设备上测试时):

E/StorageUtil():获取令牌时出错 java.util.concurrent.ExecutionException:com.google.firebase.FirebaseApiNotAvailableException:firebase-auth 未链接,请退回到未经身份验证的模式。

同一个应用程序正在查询(Firestore)数据库数据正常(没有身份验证),但我不确定我是否遗漏了一个步骤,例如明确执行与 Firebase 存储的“未经身份验证模式”相关的操作?

标签: androidfirebaseflutter

解决方案


您是否检查过您的 Firebase 存储规则?

您可以在存储页面的规则选项卡中找到它(如下所示)

在此处输入图像描述

你需要改变

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

allow read, write: if true;

并检查,但您显然希望在投入生产之前更改它。

除此之外,您的代码中有一些错字

Future<String> durl = await ref.getDownloadURL();

应该

String durl = await ref.getDownloadURL();
/// you can also use `final` and type inference will do the work for you.

推荐阅读