获取应用程序检查令牌时出错;使用占位符令牌代替

问题描述 投票:0回答:2

我的应用程序从今天开始正常工作。我已经在我的 Android Flutter 应用程序中包含了 Firebase Storage,之后它就可以工作了,今天我突然收到 AppCheck 错误。我没有在我们的项目中包含应用程序检查,或者没有在设置中强制执行。之后,我按照初始化 appcheck 的官方文档进行操作:https://firebase.flutter.dev/docs/app-check/usage

这是我的 Kotlin MainActivity:

import android.os.Bundle
import com.google.firebase.FirebaseApp
import com.google.firebase.appcheck.FirebaseAppCheck
import com.google.firebase.appcheck.debug.DebugAppCheckProviderFactory
import io.flutter.embedding.android.FlutterActivity


class MainActivity : FlutterActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        FirebaseApp.initializeApp(/*context=*/ this);
        val firebaseAppCheck = FirebaseAppCheck.getInstance()
        firebaseAppCheck.installAppCheckProviderFactory(
                DebugAppCheckProviderFactory.getInstance())
        super.onCreate(savedInstanceState)
    }
}

这是我的 main():

void main() async {
  WidgetsFlutterBinding.ensureInitialized();
  await Firebase.initializeApp();
  await FirebaseAppCheck.instance.activate();
  runApp(MyApp());
}

我还将其添加到我的 app/build.gradle 中

dependencies {
  implementation 'com.google.firebase:firebase-appcheck-debug:16.0.0-beta01'
}

当我向 Firebase 存储发出请求时,我希望控制台中出现类似的内容:

D DebugAppCheckProvider:将此调试密码输入到您项目的 Firebase 控制台的允许列表中:123a4567-b89c-12d3-e456-789012345678

相反,我收到错误:

2021-11-21 18:11:51.442 2091-3452/com.sekspir.grind4gain W/ExponenentialBackoff: network unavailable, sleeping.
2021-11-21 18:11:53.500 2091-3452/com.sekspir.grind4gain W/StorageUtil: Error getting App Check token; using placeholder token instead. Error: com.google.firebase.FirebaseException: Error returned from API. code: 403 body: App attestation failed.
2021-11-21 18:12:11.136 2091-3633/com.sekspir.grind4gain V/NativeCrypto: SSL handshake aborted: ssl=0xdaa42da8: I/O error during system call, Connection reset by peer

我在这里错过了什么吗?我正在使用带有 flutter debug 版本的真实 Android 设备。

这是 Firestore AppCheck 统计数据,显示了请求收入

但是在存储会话中没有任何请求失败或成功。

flutter dart firebase-storage firebase-app-check
2个回答
2
投票

您能否再次检查您是否正确启用了强制执行
它需要与 Firebase 存储解决方案配合使用。

您是在“PWA”模式还是“本机”模式下使用您的应用程序?
根据您的应用程序的分发方式,验证码可能是强制性的。

  await FirebaseAppCheck.instance.activate(
    webRecaptchaSiteKey: 'recaptcha-v3-site-key',
  );

我不确定您对 Android Native 端的

appcheck-debug
依赖项的实现情况。
由于它已经由 Flutter 库本身实现,因此您应该将其删除。

个人说明:我在某些设备上使用

FirebaseAppCheck
时遇到了麻烦,而它在其他设备上运行得很好。
该库仍处于测试阶段,我建议等待后再在生产中使用它。


0
投票

我明白你的问题可能是什么。我遇到了同样的问题,但就我而言,问题是我更改了应用程序名称和应用程序 id (com.example.appname) 以进行发布。但此应用程序 ID 未在 Firebase 控制台中更新。因此,您基本上需要使用更新的应用程序 ID 更新应用程序中的 google-services.json 文件。 为此,请按照以下步骤操作

  1. 在 Firebase 控制台中使用更新的包名称创建一个新应用程序(将新的应用程序 ID 放在那里)。
  2. 下载新的 google-services 文件(这是主要步骤),然后复制这个新的 google-services 文件的内容。现在返回您的 android/flutter 应用程序,并将旧 google-services.json 文件的内容替换为新 google-services.json(您复制的)的内容。
  3. 现在将 SHA 密钥添加到 Firebase 控制台中的新应用程序中。
  4. 现在重建你的 flutter/android 应用程序,它应该可以工作。
© www.soinside.com 2019 - 2024. All rights reserved.