You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Firebase邮箱密码注册登录报No AppCheckProvider installed如何解决

Firebase邮箱密码注册登录后Storage 401未认证错误解决方案

问题背景

使用Firebase作为后端服务,通过邮箱密码方式实现用户注册登录功能,相关实现代码如下:

1. 用户注册代码

try{
      await auth.createUserWithEmailAndPassword(
          email: email, password: password);
    }on FirebaseAuthException catch (e) {
      if (e.code == 'weak-password') {
        print('The password provided is too weak.');
      } else if (e.code == 'email-already-in-use') {
        print('The account already exists for that email.');
      }
    } catch (e) {
      print(e);
    }

2. 用户登录代码

try{
      await auth.signInWithEmailAndPassword(email: email, password: password);
    }on FirebaseAuthException catch (e) {
      if (e.code == 'user-not-found') {
        print('No user found for that email.');
        // showErrorDialogBox(context, 'No user found for that email.');
      } else if (e.code == 'wrong-password') {
        // showErrorDialogBox(context, 'Wrong password provided for that user.');
        print('Wrong password provided for that user.');
      }
    }

报错信息

E/StorageException( 9609): StorageException has occurred.
E/StorageException( 9609): User is not authenticated, please authenticate using Firebase Authentication and try again.
E/StorageException( 9609):  Code: -13020 HttpResult: 401
W/StorageUtil( 9609): Error getting App Check token; using placeholder token instead. Error: com.google.firebase.FirebaseException: No AppCheckProvider installed.
W/NetworkRequest( 9609): no auth token for request

报错原因

  • 时序问题:注册/登录为异步操作,在操作未完成前就发起Firebase Storage访问请求,此时用户尚未完成身份鉴权,Storage无法获取有效认证令牌,触发401未认证错误。
  • App Check配置缺失:项目已开启Firebase App Check校验,但客户端未安装对应App Check Provider,导致App Check令牌获取失败,若Storage安全规则启用了App Check校验,也会触发权限拒绝。
  • Storage安全规则限制:Firebase Storage默认安全规则通常要求用户处于认证状态才可读写资源,未登录状态或登录未完成时访问会触发权限错误。

修复方案

  • 调整操作时序:注册/登录操作为异步方法,需等待createUserWithEmailAndPassword、signInWithEmailAndPassword执行完成,且确认auth.currentUser不为空后,再发起Storage的读写请求。
  • 修复App Check配置:若不需要使用App Check,可直接在Firebase控制台关闭Storage服务的App Check校验开关;若需保留App Check能力,在客户端Firebase初始化完成后添加App Check激活配置,Flutter端示例代码如下:
    await FirebaseAppCheck.instance.activate(
      androidProvider: AndroidProvider.playIntegrity,
      appleProvider: AppleProvider.appAttest
    );
    
  • 校验Storage安全规则:确认Storage安全规则符合业务访问逻辑,仅认证用户可访问的通用规则参考如下:
    rules_version = '2';
    service firebase.storage {
      match /b/{bucket}/o {
        match /{allPaths=**} {
          allow read, write: if request.auth != null;
        }
      }
    }
    
  • 鉴权状态校验:可在注册/登录成功回调中打印当前用户uid,确认用户身份鉴权已生效后再执行后续操作。

内容的提问来源于stack exchange,提问作者Ali Yar Khan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.15 10:15:05