dart 获取应用检查令牌时出错;使用占位符标记代替

tv6aics1  于 2023-09-28  发布在  其他
关注(0)|答案(2)|浏览(162)

我的应用程序从今天开始正常工作。我已经在我的Android Flutter应用程序中包含了Firebase存储,它在今天之后工作,我突然得到AppCheck错误。我不包括应用程序检查我们的项目或不强制设置。在那之后,我遵循了初始化appcheck的官方文档:https://firebase.flutter.dev/docs/app-check/usage
这是我的KotlinMainActivity:

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

我错过什么了吗?我正在使用一个真实的的Android设备与Flutter调试建设。
这是Firestore AppCheck Stats看起来都请求收入x1c 0d1x
但在存储会话中,没有任何请求失败或成功。

bnlyeluc

bnlyeluc1#

您能否再次检查是否正确启用了强制执行?
需要使用Firebase存储解决方案。
您是在“PWA”模式还是在“Native”模式下使用应用程序?
Recaptcha可能是强制性的,具体取决于您的应用的分发方式。

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

我不确定您在Android Native端实现了appcheck-debug依赖项。
由于它已经由Flutter库本身实现,因此您应该删除它。

  • 个人备注:我在一些设备上遇到了FirebaseAppCheck的问题,而它在其他设备上工作得很完美。

此库仍处于测试阶段,我建议在生产环境中使用它之前等待。*

mo49yndu

mo49yndu2#

我明白你的问题了。我也面临着同样的问题,但在我的情况下,问题是我改变了应用程序的名称和应用程序ID(com.example.appname)的释放。但此应用程序ID未在Firebase控制台中更新。因此,您基本上需要使用更新后的应用程序ID更新应用程序中的google-services.json文件。为此,请遵循以下步骤
1.在firebase控制台中用更新后的包名创建一个新的应用程序(把你的新应用程序id放在那里)。
1.下载新的google-services文件(这是主要步骤),然后复制这个新的google-services文件的内容。现在回到你的android/flutter应用程序,用新的google-services.json(你复制的)替换旧的google-services.json文件的内容。
1.现在在firebase控制台中将SHA密钥添加到新应用程序中。
1.现在重建你的flutter/android应用程序,它应该工作。

相关问题