当前位置: 首页 > 知识库问答 >
问题:

Flatter Firebase电话认证问题

微生毅
2023-03-14

我试图用手机登录。每次我输入手机号码时,它都会显示这些错误消息并退出应用程序。我使用了https://firebase.flutter.dev/docs/auth/phone留档中的代码。代码几乎与留档相同。

E/zzf     (31149): Problem retrieving SafetyNet Token: 7:
I/Timeline(31149): Timeline: Activity_launch_request time:483815514
W/ActivityThread(31149): SCHED: com.example.newdevice/.MainActivity [85, r=578ms, a=96ms, w=57017ms]
W/ActivityThread(31149): handleWindowVisibility: no activity for token android.os.BinderProxy@dc5d811
D/ForceDarkHelper(31149): updateByCheckExcludeList: pkg: com.example.newdevice activity: com.google.firebase.auth.internal.RecaptchaActivity@5ed566f
I/chatty  (31149): uid=10315(com.example.newdevice) identical 1 line
D/ForceDarkHelper(31149): updateByCheckExcludeList: pkg: com.example.newdevice activity: com.google.firebase.auth.internal.RecaptchaActivity@5ed566f
W/ample.newdevic(31149): Accessing hidden method Lsun/misc/Unsafe;->getInt(Ljava/lang/Object;J)I (greylist, linking, allowed)
W/ample.newdevic(31149): Accessing hidden method Lsun/misc/Unsafe;->getObject(Ljava/lang/Object;J)Ljava/lang/Object; (greylist, linking, allowed)
W/ample.newdevic(31149): Accessing hidden method Lsun/misc/Unsafe;->getLong(Ljava/lang/Object;J)J (greylist,core-platform-api, linking, allowed)
W/ample.newdevic(31149): Accessing hidden method Lsun/misc/Unsafe;->objectFieldOffset(Ljava/lang/reflect/Field;)J (greylist,core-platform-api, linking, allowed)
W/ample.newdevic(31149): Accessing hidden method Lsun/misc/Unsafe;->putObject(Ljava/lang/Object;JLjava/lang/Object;)V (greylist, linking, allowed)
W/ample.newdevic(31149): Accessing hidden method Lsun/misc/Unsafe;->putInt(Ljava/lang/Object;JI)V (greylist, linking, allowed)
W/ample.newdevic(31149): Accessing hidden method Lsun/misc/Unsafe;->putLong(Ljava/lang/Object;JJ)V (greylist, linking, allowed)
......More error message.......

我正在为Java/Flatter/Firebase sdk等所有东西使用更新版本。我还在Firebase应用程序中添加了SHA1密钥,并启用了手机认证。我还尝试了物理和虚拟设备。但每次都是同样的问题。

应用程序级构建中的依赖项。等级文件

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation platform('com.google.firebase:firebase-bom:26.2.0')
    implementation 'com.google.firebase:firebase-auth'
    implementation 'com.google.firebase:firebase-analytics'
    implementation 'androidx.browser:browser:1.3.0'
    implementation 'com.android.support:multidex:1.0.3'
}

用于移动验证的颤振代码部分:

                    FirebaseAuth _auth = FirebaseAuth.instance;
                    await _auth.verifyPhoneNumber(
                        phoneNumber: mobileController.text,
                        verificationCompleted:
                            (PhoneAuthCredential credential) {
                          print(credential);
                        },
                        verificationFailed: (FirebaseAuthException error) {
                          print(error);
                        },
                        codeSent:
                            (String verificationId, int resendToken) async {
                              print('Your otp sent');
                              String smsCode = '123456';

                              PhoneAuthCredential phoneAuthCredential = PhoneAuthProvider.credential(verificationId: verificationId, smsCode: smsCode);

                              // Sign the user in (or link) with the credential
                              await _auth.signInWithCredential(phoneAuthCredential);
                            },
                        timeout: const Duration(seconds: 120),
                        codeAutoRetrievalTimeout: (String verificationId) {
                          print(verificationId);
                        }
                      );

我在这里搞砸了。我几乎尽了我所能。

共有2个答案

文国发
2023-03-14

试试这些步骤。

  1. 当然,为您的项目启用Android设备验证(API)
潘弘扬
2023-03-14

我用这些步骤克服了这个问题-

>

  • 在谷歌云控制台中,为您的项目启用Android DeviceCheck API。(**注意:选择Firebase项目并启用它)

    获取应用程序的SHA-256指纹。

    转到Firebase控制台的设置页面,选择您的项目并为您的应用设置SHA-256指纹。

    重新运行应用程序。这个解决方案对我有效。希望对你也有用。

  •  类似资料:
    • 我遵循了Flatter fire文档来实现firebase phone auth。我在firebase_auth的早期版本中尝试了这一点,一切似乎都正常,但我启动了一个新的应用程序,并安装了最新版本的firebase_auth,每当我调用firebase verifyNumber方法时,我的应用程序都会显示以下日志: 我的应用程序崩溃的原因可能是什么? 注意:

    • 我已经使用电话认证在Flatter中创建了一个登录页面。其中我得到了错误: E/FirebaseAuth(21546):[SmsRetrieverHelper]SMS验证代码请求失败:未知状态代码:17028传递了安全令牌,但在Firebase控制台中未注册匹配的SHA-256。请确保此应用程序的packageName/SHA256对已在Firebase控制台中注册。I/flatter(21546

    • Firebase电话认证自动发送otp,不填写edittext。otp是在edittext中手动输入的。如何自动检测传入的验证短信并使用用户操作执行验证? Otp.kt

    • 我知道我们不能更改电子邮件验证模板或短信验证模板。 我已经设置了公共名称,它一直工作到日期。但是今天我得到了另一个文本而不是那个名称的OTP。 123345是你的验证码。egad5adfe/g 最后一个词egad5adfe/g是什么,为什么它代替了面向公众的名称? 最近几天我什么都没变。我不知道为什么会这样。有人能帮忙吗?

    • 我是一个新的flutter,并使用firebase验证电话号码,但我无法验证。我浏览了它,但没有得到任何满意的解决办法。 我从StackOverflow实现了一些代码,但出现异常“Unhanded Exception:type”(FirebaseUser)=>Null'不是type Cast“中类型”(AuthCredential)=>Void“的子类型,因此无法捕获该异常。 pubspec.ya

    • 我正在尝试创建一个flutter应用程序,在创建一个用户的电子邮件/密码后,他们被保存在firebase,然后用户输入他的电话号码,发送OTP和用户在验证后登录。我的问题是,当这两个步骤都完成时,firebase正在创建两个单独的帐户,一个是电子邮件帐户,另一个是电话帐户。请告诉我如何创建一个既有电子邮件/密码又有电话的单一帐户。我还想同时使用电子邮件/密码或电话登录。或任何其他方式创建具有电子邮