本机 Android Firebase AppCheck 应用程序认证失败

sol*_*for 6 android firebase firebase-app-check

我正在从 android 运行以下代码来获取 AppCheck 令牌。但是,我在 in 中遇到错误。

FirebaseAppCheck.getInstance()
                .getAppCheckToken(true)
                .addOnSuccessListener(new OnSuccessListener<AppCheckToken>() {
                    @Override
                    public void onSuccess(@NonNull AppCheckToken tokenResponse) {
                        String appCheckToken = tokenResponse.getToken();
                        new FirebaseAPIFunction(appCheckToken).execute();
                    }
                }).addOnFailureListener(new OnFailureListener() {
            @Override
            public void onFailure(@NonNull Exception e) {
                e.printStackTrace();
            }
        });
Run Code Online (Sandbox Code Playgroud)

这是我收到的错误。

W/System.err: com.google.firebase.FirebaseException: Error returned from API. code: 403 body: App attestation failed.
W/System.err:     at com.google.firebase.appcheck.internal.NetworkClient.exchangeAttestationForAppCheckToken(NetworkClient.java:177)
W/System.err:     at com.google.firebase.appcheck.safetynet.internal.SafetyNetAppCheckProvider.lambda$exchangeSafetyNetAttestationResponseForToken$1$SafetyNetAppCheckProvider(SafetyNetAppCheckProvider.java:186)
W/System.err:     at com.google.firebase.appcheck.safetynet.internal.-$$Lambda$SafetyNetAppCheckProvider$B6GhOWtZfyrWKLfSayghedQVnKQ.call(Unknown Source:4)
W/System.err:     at com.google.android.gms.tasks.zzv.run(Unknown Source:2)
W/System.err:     at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
W/System.err:     at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
W/System.err:     at java.lang.Thread.run(Thread.java:920)
Run Code Online (Sandbox Code Playgroud)

在为 Android 设置应用程序证明时,我在 Google Play 商店控制台中的此信息下使用了 SHA 256 密钥。

在此输入图像描述

从客户端解决此问题的最佳方法是什么?

Nil*_*esh -4

要获取 FCM 访问令牌,您可以尝试以下代码

        FirebaseMessaging.getInstance().getToken()
            .addOnCompleteListener(task -> {
                if (!task.isSuccessful())
                {
                    SOUT("Fetching FCM registration token failed");
                    return;
                }
                SOUT("FCM:>"+task.getResult());
                sharedPref.edit().putString(Constants.shk_FCM_KEY,""+task.getResult()).commit();
            });
Run Code Online (Sandbox Code Playgroud)

您将使用此 task.getResult() 获得令牌;

  • 这看起来不像是用于 appcheck...,而是用于 firebase 消息传递。 (2认同)