【问题标题】:SafetyNet Attestation fails Flutter Firebase Phone AuthenticationSafetyNet Attestation 未能通过 Flutter Firebase 电话身份验证
【发布时间】:2021-01-30 10:21:52
【问题描述】:

我正在处理我的一个颤振项目并尝试添加 Firebase 电话身份验证,但我遇到了与安全网相关的错误。而我可以使用其他身份验证方法,例如使用电子邮件和密码登录。每当我调用我的 phoneLogin 函数时,我都会收到错误消息。我已经在我的模拟器上安装了 google play 服务。

代码

        Future phoneLogin(String phone) async {
        BuildContext context;
        try {
          await auth.verifyPhoneNumber(
              phoneNumber: '+91$phone',
              timeout: const Duration(seconds: 30),
              verificationCompleted: (PhoneAuthCredential credentials) async {
                await auth.signInWithCredential(credentials);
              },
              verificationFailed: (FirebaseAuthException exception) {},
              codeSent: (String verificationId, [int forcedResendingToken]) {
                // print('1')
                Navigator.push(
                  context,
                  MaterialPageRoute(
                    builder: (BuildContext context) => OtpPage(phone: phone),
                  ),
                );
              },
              codeAutoRetrievalTimeout: (String abc) {});
          return null;
        } catch (e) {
          return null;
        }
      }

错误

    E/zzbf    ( 6483): SafetyNet Attestation fails basic integrity.
    I/zzkn    ( 6483): Provider GmsCore_OpenSSL not available
    W/System  ( 6483): Ignoring header X-Firebase-Locale because its value was null.
    D/AndroidRuntime( 6483): Shutting down VM
    E/AndroidRuntime( 6483): FATAL EXCEPTION: main
    E/AndroidRuntime( 6483): Process: com.oneobit.greenobit, PID: 6483
    E/AndroidRuntime( 6483): java.lang.NoClassDefFoundError: Failed resolution of: Landroidx/browser/customtabs/CustomTabsIntent$Builder;
    E/AndroidRuntime( 6483):    at com.google.firebase.auth.internal.RecaptchaActivity.zza(com.google.firebase:firebase-auth@@20.0.2:13)
    E/AndroidRuntime( 6483):    at com.google.android.gms.internal.firebase-auth-api.zztw.zzb(com.google.firebase:firebase-auth@@20.0.2:7)
    E/AndroidRuntime( 6483):    at com.google.android.gms.internal.firebase-auth-api.zztw.onPostExecute(Unknown Source:2)
    E/AndroidRuntime( 6483):    at android.os.AsyncTask.finish(AsyncTask.java:771)
    E/AndroidRuntime( 6483):    at android.os.AsyncTask.access$900(AsyncTask.java:199)
    E/AndroidRuntime( 6483):    at android.os.AsyncTask$InternalHandler.handleMessage(AsyncTask.java:788)
    E/AndroidRuntime( 6483):    at android.os.Handler.dispatchMessage(Handler.java:106)
    E/AndroidRuntime( 6483):    at android.os.Looper.loop(Looper.java:223)
    E/AndroidRuntime( 6483):    at android.app.ActivityThread.main(ActivityThread.java:7656)
    E/AndroidRuntime( 6483):    at java.lang.reflect.Method.invoke(Native Method)
    E/AndroidRuntime( 6483):    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:592)
    E/AndroidRuntime( 6483):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:947)
    E/AndroidRuntime( 6483): Caused by: java.lang.ClassNotFoundException: Didn't find class "androidx.browser.customtabs.CustomTabsIntent$Builder" on path: DexPathList[[zip file "/data/app/~~VMK8TkW9ozBJD9t7dnRn8g==/com.oneobit.greenobit-EtKxl5CBj6rDZiliq4I1ZQ==/base.apk"],nativeLibraryDirectories=[/data/app/~~VMK8TkW9ozBJD9t7dnRn8g==/com.oneobit.greenobit-EtKxl5CBj6rDZiliq4I1ZQ==/lib/x86, /data/app/~~VMK8TkW9ozBJD9t7dnRn8g==/com.oneobit.greenobit-EtKxl5CBj6rDZiliq4I1ZQ==/base.apk!/lib/x86, /system/lib, /system_ext/lib]]
    E/AndroidRuntime( 6483):    at dalvik.system.BaseDexClassLoader.findClass(BaseDexClassLoader.java:207)
    E/AndroidRuntime( 6483):    at java.lang.ClassLoader.loadClass(ClassLoader.java:379)
    E/AndroidRuntime( 6483):    at java.lang.ClassLoader.loadClass(ClassLoader.java:312)
    E/AndroidRuntime( 6483):    ... 12 more
    I/Process ( 6483): Sending signal. PID: 6483 SIG: 9
    Lost connection to device.

我已经将 SHA256 密钥更新到我的 Firebase 控制台。

【问题讨论】:

  • 我可以看看你的 android/app/build.gradle 吗?

标签: firebase flutter safetynet-api


【解决方案1】:

Firebase 已经更新了其中的一些内容,其中之一是在将代码或 OTP 发送到移动设备之前包含了验证码

要解决此问题,请参见下文:

将以下内容添加到project/android/app/build.gradle

implementation "androidx.browser:browser:1.3.0"

将此添加到依赖项部分...

dependencies {

implementation "androidx.browser:browser:1.3.0"
///
}

您可以在这里找到最新版本:android browser

原因:

应用程序尝试验证验证码并发送代码,因为它尝试启动浏览器,但由于缺少实现,它无法加载浏览器并导致应用程序崩溃。

【讨论】:

  • 很高兴听到@HimanshuRai ?如果这回答了您的问题,请单击复选标记 (✓) 接受它。这样其他人就知道你已经(充分地)得到了帮助。另见stackoverflow.com/help/someone-answers
  • E/zzbf ( 9275): SafetyNet Attestation fails basic integrity. W/System ( 9275): Ignoring header X-Firebase-Locale because its value was null.
  • 我在上面,但你需要稍等一下:)
  • 嘿,我的代码工作了……我只是将错误的构建上下文传递给了导航器。谢谢
猜你喜欢
  • 2019-12-04
  • 2021-06-10
  • 1970-01-01
  • 2019-08-05
  • 2021-02-12
  • 2020-01-23
  • 2021-06-20
  • 2021-08-28
  • 2021-06-27
相关资源
最近更新 更多