问题描述
尝试在同一个 Firebase 项目中添加另一个应用程序,因为这两个应用程序彼此相关,现在我们在一个 Firebase 项目中有两个应用程序,它们具有不同的包名称但使用了相同的密钥库,因此发布的 SHA1 和 SHA256 与嗯。
在 Cloud Console 中启用 Android 设备验证,因此不再需要 CAPTCHA。
启动第二个新添加的应用,然后测试电话身份验证。
在 Firebase UI 中收到未知错误。
日志:
2021-03-23 23:48:12.109 9350-9350/com.new.added.app E/g0: SafetyNet Attestation has advice:
LOCK_BOOTLOADER
2021-03-23 23:48:12.642 9350-10676/com.new.added.app E/FirebaseAuth: [GetAuthDomainTask] Error getting project config. Failed with INVALID_CERT_HASH 400
2021-03-23 23:48:12.745 9350-9350/com.new.added.app E/r0: Failed to get reCAPTCHA token with error [There was an error while trying to get your package certificate hash.]- calling backend without app verification
2021-03-23 23:48:13.179 9350-9453/com.new.added.app E/FirebaseAuth: [SmsRetrieverHelper] SMS verification code request Failed: unkNown status code: 17093 null
2021-03-23 23:48:13.192 9350-9350/com.new.added.app E/AuthUI: A sign-in error occurred.
com.google.firebase.auth.p: This request is missing a valid app identifier,meaning that neither SafetyNet checks nor reCAPTCHA checks succeeded. Please try again,or check the logcat for more details.
at c.c.a.d.f.h.tk.a(com.google.firebase:firebase-auth@@20.0.3:26)
at c.c.a.d.f.h.yl.a(com.google.firebase:firebase-auth@@20.0.3:1)
at c.c.a.d.f.h.zl.run(com.google.firebase:firebase-auth@@20.0.3:3)
at android.os.Handler.handleCallback(Handler.java:794)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:176)
at android.app.ActivityThread.main(ActivityThread.java:6651)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:547)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:824)
我注意到这发生在选定的设备上,我尝试运行发行版 apk,它适用于小米 Redmi Note 2 SDK 21(不带 SIM)和 Mi 90T Pro SDK 29(带 SIM),但在 Redmi 5A 上发生错误(没有 SIM 卡)。我认为这与启用 SafetyNet
API 后 Android Device Verification
的工作方式有关,如果有人能解释一下,将非常感谢和帮助。 TIA
更新:
我发现如果设备 bootloader
是 unlocked
,即使它没有 root,Firebase Auth SafetyNet 也无法工作。
参考: https://forum.xda-developers.com/t/just-unlocking-the-bootloader-breakes-safety-net-and-make-device-unverified.4146761/ https://xiaomi.eu/community/threads/unlock-bootloader-and-banking-apps.56312/
由于大多数非高级用户可能不知道这一点,因此是否有任何解决方法?
解决方法
如果您的设备引导加载程序处于解锁状态,那么您需要锁定它。我也遇到了类似的问题,在解锁引导加载程序的情况下,我可以登录应用程序,但每次都可以看到 reCAPTCHA,并且项目 url 以 OTP 短信的形式出现。
根据 firebase,如果出现以下情况,设备将无法通过安全网检查:
-
未为应用启用 Cloud Console 中的 Android 设备验证。
-
用户没有 Google Play 服务支持或当您在模拟器上测试您的应用时。
-
您的设备未通过可疑检查意味着您的设备是否已获得 root 权限或设备引导加载程序是否处于解锁状态。
在解锁引导加载程序的情况下,即使您启用了 Android 设备验证,用户也会每次都被重定向到 reCAPTCHA。
有关如何锁定引导加载程序的详细信息,请检查 this