Flutter Firebase 存储:请求没有身份验证令牌

Posted

技术标签:

【中文标题】Flutter Firebase 存储:请求没有身份验证令牌【英文标题】:Flutter Firebase Storage : no auth token for request 【发布时间】:2020-06-26 23:54:10 【问题描述】:

我在使用 Image_Picker 时尝试将图像上传到 Firebase 存储。

当我想将图片(imageFile)上传到 Firebase 存储时

 Future uploadFile() async 
    StorageReference storageReference =
        storage.ref().child('profile/$Path.basename(imageFile.path)');

    print('uploading..');
    StorageUploadTask uploadTask = storageReference.putFile(imageFile);

    //waiting for the image to upload
    await uploadTask.onComplete;

    print('File Uploaded');
    storageReference.getDownloadURL().then((fileURL) 
      setState(() 
        imageURL = fileURL;
      );
      print(imageURL);
    );
  

但是,在上传过程中,出现错误提示我没有身份验证令牌请求。 我之前使用 Firebase Auth 将数据存储到数据库中,并且所有内容都已正确配置(我假设是因为 Firebase 给了我一个 google.json 文件)。

W/NetworkRequest( 5796): no auth token for request

E/StorageUtil( 5796): error getting token java.util.concurrent.TimeoutException: Timed out waiting for Task

我还尝试将存储规则从 read, write if auth != null 更改为 read, write。

【问题讨论】:

【参考方案1】:

检查您的 Firebase 存储规则。我认为默认选项是只允许经过身份验证的用户。如果这是问题所在,只需将它们更改为最适合您需求的即可。

【讨论】:

这实际上是我的问题,感谢您的回答 @AhmedKhattab 你设置了什么?可以分享一下规则吗?请问我有同样的问题!【参考方案2】:

您是否使用 GoogleSignIn 进行身份验证,您能否为 firebase 提供您的用户身份验证代码?对于我使用以下代码解决的 googlesignin 方法,我遇到了相同的问题“无身份验证令牌请求”。

final GoogleSignIn googleSignIn = GoogleSignIn();
FirebaseUser firebaseUser;
GoogleSignInAccount account = await googleSignIn.signIn();
final GoogleSignInAuthentication googleAuth = await account.authentication;
final AuthCredential _cred = GoogleAuthProvider.getCredential(idToken: googleAuth.idToken, accessToken: googleAuth.accessToken);
final AuthResult _res = await FirebaseAuth.instance.signInWithCredential(_cred);
firebaseUser = _res.user;

【讨论】:

我认为它不仅适用于谷歌登录......而且适用于所有登录选项!!!

以上是关于Flutter Firebase 存储:请求没有身份验证令牌的主要内容,如果未能解决你的问题,请参考以下文章

有没有办法将flutter_tts文件保存到firebase存储?

如何在 Flutter 中从 firebase 存储读取和写入文本文件?

如何在 Flutter 应用程序中更新 Firebase 令牌并存储它?

带有 Firebase 托管的 Flutter web 无法从存储中加载图片

带有firebase的Flutter HTTP包不适用于删除请求,但适用于发布,补丁和获取?

扑动 Firebase authStateChanges 没有被触发