【问题标题】:Flutter Firebase Storage returning FirebaseApiNotAvailableExceptionFlutter Firebase 存储返回 FirebaseApiNotAvailableException
【发布时间】:2019-07-04 09:45:02
【问题描述】:

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

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) 数据库数据 OK(没有身份验证),但我不确定我是否遗漏了一个步骤,例如,为 Firebase 显式执行与“未经身份验证模式”相关的操作存储?

【问题讨论】:

    标签: android firebase flutter


    【解决方案1】:

    您检查过您的 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.
    

    【讨论】:

    • 我提到了我目前的规则,所以不是这样。这里还缺少其他东西,我不知道是什么。
    • 好的,您是否已将 sha-1 密钥添加到 firebase 并将最新的 google-services.json 下载到您的项目中?
    • 谢谢。我最初错过了 sha-1 添加。我现在已经完成了这项工作并应用了更新的 g-s.json 文件,但是,我仍然没有成功,出现新错误“获取令牌时出错...请在尝试获取令牌之前登录”。我还缺少什么?
    • 最终我发现(无论规则如何)我必须匿名登录才能访问参考的 downloadUrl。
    猜你喜欢
    • 2020-10-24
    • 2021-01-10
    • 2022-01-16
    • 2016-09-30
    • 2021-04-06
    • 2021-09-28
    • 2019-03-16
    • 2018-10-02
    • 2020-04-26
    相关资源
    最近更新 更多