Fire存储异常([firebase_storage/unauthorized]用户未被授权执行所需操作,)(我的规则是允许读/写)

egmofgnx  于 2022-11-25  发布在  其他
关注(0)|答案(5)|浏览(171)

我试图从firebase firestore获取图像,而试图获取图像下载网址有这个异常:
带存储实用程序(10206):请求没有身份验证令牌

  • (与此错误类似的问题不能解决问题)*

虽然我的安全规则允许读取和写入,我仍然得到这个错误。
你知道这有什么问题吗?
用于获取图像URL的代码:

static Future<dynamic> loadImage(BuildContext context, String image) async {
    return await FirebaseStorage.instance.ref().child(image).getDownloadURL();
  }

调用此loadImage函数:

Future<Widget> getImage(BuildContext context, String imgName) async {
   Image image;
    await FireStorageService.loadImage(context, imgName).then((value) {
    print(value);
    image = Image.network(value.toString(), fit: BoxFit.scaleDown);
    return image;
   });
  }

调用此getImage函数:

child: FutureBuilder(
future: getImage(context, "/images/test1.jpg"),
...
)

我的firebase存储规则:

rules_version = '2';
service firebase.storage {
match /images/{imageId} {
  allow read,write;
}
}

存储规则ss:

我的firebase商店目前:

noj0wjuj

noj0wjuj1#

  • 导航至Firebase控制台
  • 在“开发开放存储”下的侧栏中
  • 打开“规则”选项卡,将控制台上的规则替换为以下规则:
rules_version = '2';

 service firebase.storage {

   match /b/{bucket}/o {

     match /{allPaths=**} {

       allow read, write

     }

   }

 }

并发布完成

nvbavucw

nvbavucw2#

我改变了规则。
转到Firebase项目〉存储〉规则。
默认情况下,不允许您在Firebase上上传,所以您必须更改这一点。

  • 默认规则
rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if false;
    }
  }
}

allow read, write: if false;更改为allow read, write;

jjhzyzn0

jjhzyzn03#

转到项目设置-〉应用检查-〉产品将存储从强制更改为非强制x1c 0d1x

nwlls2ji

nwlls2ji4#

通过改变firebase中的规则,这对我很有效。

rules_version = '2';
service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write
    }
  }
}
o3imoua4

o3imoua45#

**(2022):**最近,我解决了以下Firestore基本安全规则(针对认证用户):

service firebase.storage {
  match /b/{bucket}/o {
    match /{allPaths=**} {
      allow read, write: if request.auth != null;
    }
  }
}

你可以在他们的网站上看到这个:https://firebase.google.com/docs/rules/basics?authuser=1#cloud-storage_1
我不建议使用允许读、写;如果你的应用程序有一个身份验证,那么你需要检查auth是否为空。

相关问题