android - 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 存储的“未经身份验证模式”相关的操作?
解决方案
您是否检查过您的 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.
推荐阅读
- elasticsearch - 容器 STDOUT 到两个单独的 ELS 索引
- spring-boot - io.jsonwebtoken.SignatureException:JWT 签名与本地计算的签名不匹配
- java - 从上次迭代中拆分字符串
- elasticsearch - 将日志从 AWS 发送到 Elasticcloud
- java - 如何拒绝输入
- python - 这段代码对 python 线程模块安全吗?
- html - 我是否错误地使用了 flexbox?- 2 列 flexbox 错误
- pre-commit-hook - 是否可以列出受预提交运行影响的文件?
- flutter - 如何在颤振中工作 zonedSchedule 本地通知
- android - 如何使用 Flutter Driver 编写测试以等待关闭应用程序