2023年2月,使用Firebase在Android上验证电话身份验证而无需显示Recaptcha。

16
我使用Flutter和Firebase开发了一个应用程序,它使用Android和IOS的手机验证功能。一切都按预期工作,除了在Android上出现了reCAPTCHA。
为了解决这个问题,在文档中指出需要使用SafetyNet,但由于Firebase AppChecker已经被弃用,因此现在无法从中启用它。我一直在使用新的Play完整性API来替代SafetyNet,但目前似乎不起作用(recaptcha仍然可见)。
如果有人有解决方案,请分享! 感谢您花费时间。

3
你遇到了完全相同的问题。你已经想出了解决方案吗?我认为可能是我没有正确设置Play完整性API。 - RaideR
Google支持团队写道:很遗憾,我们无法提供Play Integrity API电话验证实施的时间表。目前,您可以使用reCAPTCHA验证进行电话号码认证。SafetyNet停用与reCAPTCHA API无关。这两个SafetyNet API是独立的,Attestation API的停用不会影响reCAPTCHA API。即使在迁移到Play Integrity API后,您仍然可以使用此API。我们将尽快更新此文档以避免混淆。 - RaideR
不太确定,但 SafetyNet 可能也会阻止 OTP 到达真实设备。添加新的 API,Play 完整性,重新配置 FlutterFire,但控制台仍然打印出代码为 7 的 SafetyNet 失败信息。 - Sayyid J
3个回答

1

我曾经遇到过类似的问题,但那是在开发期间出现的,然而,在将其部署到Playstore后,问题就解决了。Firebase电话验证不应该要求使用reCAPTCHA,但如果您遇到此问题,则可能是以下原因:

  1. 您在短时间内使用该号码进行了太多请求。
    解决方案:在开发期间对用于身份验证的号码进行白名单处理。
  2. 您正在使用一个经常用于垃圾邮件或滥用的电话号码,Firebase可能需要reCAPTCHA挑战以确保验证请求是合法的。
    解决方案:使用另一个号码进行身份验证。

1

你是对的:SafetyNet API已经被弃用,2023年1月31日后无法用于新创建的项目。

不幸的是,Play Integrity API目前无法处理OTP身份验证。Google支持团队写信告诉我:

[...] 请注意,Firebase电话验证(OTP)尚未为Play Integrity API提供功能。

解决方案是进一步使用SafetyNet Attestation API。你需要申请。这个过程大约需要三周时间来完成我的项目。

如果你获得了批准,你需要前往Google API控制台中的库页面并激活“Android设备验证API”。

通过以下项目设置,它应该可以工作,你将不再看到验证码:

  • Google Cloud Console:通过App Integrity将你的应用与Google Play Integrity API链接
  • firebase项目--> App Check --> 选择你的Android应用程序--> 将其与Play Integrity API链接
  • 成功申请后启用Android设备验证API
注意:该过程与使用Flutter无关,同样适用于例如React Native或Android项目。

0

我在使用谷歌身份验证服务时遇到了很多问题。有时候,一次性密码无法正常传递。我的建议是使用第三方API服务,因为这会减少代码量。一些第三方电话认证服务包括:

2 Factor

Text Local

这些服务提供电话认证解决方案,并可用作谷歌身份验证服务的替代品。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接