Xamarin Android中Firebase AppCheck Token始终为空问题求助
核心问题
已被Firebase AppCheck相关问题困扰一周,具体表现:
- 调用
GetToken()方法始终返回固定异常Token:eyJlcnJvciI6IlVOS05PV05fRVJST1IifQ==,调试模式、真机生产模式、Play Console内部测试渠道下载的应用均出现此情况。 - 使用Firebase Console生成的调试Token调用启用AppCheck的Firebase Storage时,始终提示
AppCheck Token is invalid。
获取Token的代码实现
public async void GetToken() { var AppCheckToken = await AppCheck.GetToken(false); if (AppCheckToken is AppCheckTokenResult Tok) { string r; r = Tok.Token; Preferences.Set("AppCheckToken", r); } }
初始AppCheck初始化代码
auth = FirebaseAuth.GetInstance(app); PlayIntegrityAppCheckProviderFactory f = new PlayIntegrityAppCheckProviderFactory(); f.Create(app); AppCheck = FirebaseAppCheck.GetInstance(app); AppCheck.InstallAppCheckProviderFactory(f); AppCheck.SetTokenAutoRefreshEnabled(true);
抛出的异常信息
--- End of managed Firebase.FirebaseException stack trace --- com.google.firebase.FirebaseException: null at
com.google.firebase.appcheck.internal.DefaultFirebaseAppCheck.lambda$getToken$1(DefaultFirebaseAppCheck.java:205)
at
com.google.firebase.appcheck.internal.DefaultFirebaseAppCheck$$ExternalSyntheticLambda1.then(Unknown
Source:0) at
com.google.android.gms.tasks.zze.run(com.google.android.gms:play-services-tasks@@18.0.2:1)
at android.os.Handler.handleCallback(Handler.java:942) at
android.os.Handler.dispatchMessage(Handler.java:99) at
android.os.Looper.loopOnce(Looper.java:201) at
android.os.Looper.loop(Looper.java:288) at
android.app.ActivityThread.main(ActivityThread.java:7892) at
java.lang.reflect.Method.invoke(Native Method) at
com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:548)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:936) Caused
by: java.lang.NumberFormatException: null at
java.lang.Long.parseLong(Long.java:699) at
java.lang.Long.parseLong(Long.java:861) at
com.google.firebase.appcheck.playintegrity.internal.PlayIntegrityAppCheckProvider.lambda$getPlayIntegrityAttestation$4$com-google-firebase-appcheck-playintegrity-internal-PlayIntegrityAppCheckProvider(PlayIntegrityAppCheckProvider.java:105) at
com.google.firebase.appcheck.playintegrity.internal.PlayIntegrityAppCheckProvider$$ExternalSyntheticLambda1.then(Unknown
Source:4) at
com.google.android.gms.tasks.zzo.run(com.google.android.gms:play-services-tasks@@18.0.2:1)
... 8 more
后续尝试的操作及结果
- 更换初始化方式:
FirebaseAppCheck AppCheck = FirebaseAppCheck.Instance; AppCheck.InstallAppCheckProviderFactory(PlayIntegrityProviderFactory.Instance); - 曾触发
PlayStore is not uptodate in your device异常,更新PlayStore后,恢复为上述NumberFormatException。 - 尝试使用
AddOnSuccessListener(this)获取Token,结果无变化。 - 确认
GetToken()返回的AppCheckToken始终为DefaultFirebaseAppCheckTokenResult类实例。
因缺少C#版本Firebase AppCheck官方使用文档,无法定位问题根源,寻求解决思路。
内容的提问来源于stack exchange,提问作者Exception

