Firebase auth工作正常,调试版本突然开始失败,没有任何代码更改,记录下面的消息
D/PhoneAuthActivity(7392):signInWithCredential:failure:com.google.firebase.auth.FirebaseAuthException:此应用无权使用Firebase身份验证.请验证Firebase控制台中是否配置了正确的软件包名称和SHA-1.[应用验证失败].
成功登录和失败之间唯一值得注意的行动是android studio升级.
java android firebase android-studio firebase-authentication
我在检索 firebase 令牌时遇到以下问题
FirebaseMessaging.getInstance().getToken()
Run Code Online (Sandbox Code Playgroud)
在调试模式下,我获取令牌并将其发送到服务器
在运行模式下,应用程序工作正常,它已发布,但我无法获取令牌,因为我已经感谢 Crashlytics @Firebase 控制台
java.io.IOException:FIS_AUTH_ERROR
我尝试了此处找到的所有建议解决方案java.io.IOException: FIS_AUTH_ERROR in Android Firebase但没有成功
使用的库,build.gradle (:app)
implementation platform('com.google.firebase:firebase-bom:26.7.0')
Run Code Online (Sandbox Code Playgroud) crashlytics 仪表板显示许多设备(所有操作系统版本、各种 OEM)都面临此 IOException(SERVICE_NOT_AVAILABLE 或 FIS_AUTH_ERROR)。我很多天都很难弄清楚这个问题。
重现步骤:我无法重现此错误。另外,还浏览了所有 stackoverflow / github 帖子。另外,还浏览了最近的链接java.io.IOException: FIS_AUTH_ERROR in Android Firebase 并更新了我的 google-services.json 文件(因为它已更改)。但这并没有帮助。仍然遇到这些崩溃。
描述您的环境:-
Android Studio version: 4.1.3
Firebase Components used:
Analytics,
Crashlytics,
RemoteConfig,
Functions,
Firestore,
Performance,
AppIndexing,
Cloud Messaging,
Auth,
InApp messaging
Component version: 27.1.0 (bom)
Run Code Online (Sandbox Code Playgroud)
堆栈跟踪:
Fatal Exception: java.io.IOException: SERVICE_NOT_AVAILABLE
at com.google.firebase.iid.GmsRpc.handleResponse(com.google.firebase:firebase-iid@@21.1.0:7)
at com.google.firebase.iid.GmsRpc.lambda$extractResponseWhenComplete$0$GmsRpc(com.google.firebase:firebase-iid@@21.1.0:1)
at com.google.firebase.iid.GmsRpc$$Lambda$0.then(:2)
at com.google.android.gms.tasks.zze.run(com.google.android.gms:play-services-tasks@@17.2.0:5)
at com.google.firebase.iid.FirebaseIidExecutors$$Lambda$0.execute()
at com.google.android.gms.tasks.zzc.zza(com.google.android.gms:play-services-tasks@@17.2.0:6)
at com.google.android.gms.tasks.zzq.zza(com.google.android.gms:play-services-tasks@@17.2.0:19)
at com.google.android.gms.tasks.zzu.zza(com.google.android.gms:play-services-tasks@@17.2.0:104)
at com.google.android.gms.tasks.zze.run(com.google.android.gms:play-services-tasks@@17.2.0:15)
at com.google.android.gms.cloudmessaging.zzz.execute()
at com.google.android.gms.tasks.zzc.zza(com.google.android.gms:play-services-tasks@@17.2.0:6)
at com.google.android.gms.tasks.zzq.zza(com.google.android.gms:play-services-tasks@@17.2.0:19)
at com.google.android.gms.tasks.zzu.zza(com.google.android.gms:play-services-tasks@@17.2.0:104)
at com.google.android.gms.tasks.TaskCompletionSource.setResult(com.google.android.gms:play-services-tasks@@17.2.0:8)
at com.google.android.gms.cloudmessaging.zzq.zza(com.google.android.gms:play-services-cloud-messaging@@16.0.0:9)
at com.google.android.gms.cloudmessaging.zzs.zza(com.google.android.gms:play-services-cloud-messaging@@16.0.0:7) …Run Code Online (Sandbox Code Playgroud) 我正在尝试实现一种与后端服务器进行通信的方法,并确保后端是仅在我的应用程序正在调用时才应答。
所以我的想法是,我只发送带有HTTPS POST请求的SHA1 / MD5指纹,并在后端服务器上对其进行验证。如果指纹匹配,则服务器将应答。
所以我的第一个问题是:如何在运行时以编程方式获取这些内容?可能吗?
第二个问题是:会那么容易吗?还是我真的必须设置OAuth服务器(或使用google-api)?...问题是,我认为OAuth对于我的用例来说有点过头了,我不想处理过期/刷新令牌的内容。