ios 每次都需要 reCAPTCHA 与/firestore auth (Flutter)

Posted

技术标签:

【中文标题】ios 每次都需要 reCAPTCHA 与/firestore auth (Flutter)【英文标题】:ios requires reCAPCHA every time w/ firestore auth (Flutter) 【发布时间】:2020-07-01 02:58:44 【问题描述】:

我在我的颤振应用中使用电话验证。我的目标是有以下流程: 1. 用户输入电话号码 2. 用户收到验证码 3. 用户输入验证码并登录。在 android 上,这就是我得到的流程。然而,在 ios 上,它会 1. 用户输入电话号码 2. reCAPCHA 页面打开以确保我不是机器人 3. 用户收到验证码 4. 用户输入代码并登录(这发生在 ios 模拟器上) .我想摆脱 reCAPCHA 页面。有人建议我打开“远程通知”,所以我尝试在 Xcode 中通过将其作为“功能”添加到我的跑步者来做到这一点,现在我的 Info.plist 包括

<key>UIBackgroundModes</key>
    <array>
        <string>remote-notification</string>
    </array>

这似乎是正确的。但是,这并没有解决问题,我仍然面临验证码。

firebase 身份验证版本:

firebase_auth: 0.15.4

颤振医生的输出

[✓] Flutter (Channel stable, v1.12.13+hotfix.5, on Mac OS X 10.15.2 19C57, locale en-US)
    • Flutter version 1.12.13+hotfix.5 at /Users/gollyzoom/development/flutter
    • Framework revision 27321ebbad (3 months ago), 2019-12-10 18:15:01 -0800
    • Engine revision 2994f7e1e6
    • Dart version 2.7.0


[✓] Android toolchain - develop for Android devices (Android SDK version 28.0.3)
    • Android SDK at /Users/gollyzoom/Library/Android/sdk
    • Android NDK location not configured (optional; useful for native profiling support)
    • Platform android-29, build-tools 28.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 11.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 11.3, Build version 11C29
    • CocoaPods version 1.8.4

[✓] Android Studio (version 3.5)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin version 39.0.3
    • Dart plugin version 191.8423
    • Java version OpenJDK Runtime Environment (build 1.8.0_202-release-1483-b49-5587405)

[✓] IntelliJ IDEA Ultimate Edition (version 2019.1.4)
    • IntelliJ at /Applications/IntelliJ IDEA.app
    • Flutter plugin version 38.1.3
    • Dart plugin version 191.8593

[✓] Connected device (2 available)
    • Android SDK built for x86 • emulator-5554                        • android-x86 • Android 9 (API 28) (emulator)
    • iPhone 11 Pro Max         • B3536B50-C435-4442-9CF4-69D470B979CA • ios         •
      com.apple.CoreSimulator.SimRuntime.iOS-13-3 (simulator)

• No issues found!

如果有人对此有任何建议,我将不胜感激!

【问题讨论】:

【参考方案1】:

您需要为 iOS 设置静默推送通知。

参考本文档:https://firebase.google.com/docs/auth/ios/phone-auth

您将看到在授权电话号码时有 2 种策略:reCaptcha(验证您不是机器人)和静默推送通知。

还有其他配置,但总结一下:

    在 Xcode 中,为您的项目启用推送通知。 将您的 APNs 身份验证密钥上传到 Firebase。

【讨论】:

谢谢,但我们更关心Android而不是IOS。我看过关于 IOS 的那篇文章,但 Android 的这种行为太奇怪了。【参考方案2】:

这恰好也出现在 Android 中。我在输入验证码之前打开了 reCaptcha。

【讨论】:

这里也一样,我知道为什么会这样。这是因为在应用程序级别构建 gradle 依赖项中添加了implementation 'androidx.browser:browser:1.2.0'。但对我来说,删除它时应用程序崩溃。不知道为什么? 这看起来像是他们在上一个版本中实现的。我不知道是否有人可以恢复到旧版本以及是否可行。感谢您的回复。无论如何,我创建了一张支持颤振的票。 嘿,你能提供最新情况吗?他们说了什么?有没有办法绕过这个? 我仍在与颤振支持人员交谈,并为他们创建了一个 MCVE,并将保持该票证的更新。 @FaizanKamal 我在删除时遇到错误 =>implementation 'androidx.browser:browser:1.2.0' 我已经添加了 SHA-1 和 SHA-256。它仍然在浏览器中打开 recaptcha 视图。你找到任何解决方案了吗?谢谢【参考方案3】:

这是我在Android中的问题的解决方案https://github.com/FirebaseExtended/flutterfire/issues/4189#issuecomment-741711350

@Omrankabalan 制作的步骤

转到https://console.cloud.google.com/

如果您有 Firebase 项目,可以从此处打开

然后选择所有选项卡并选择您现有的项目

然后转到 API 和服务 => 库 搜索“Android 设备验证”

启用它

在 Firebase 中确保在项目设置中添加 SHA-256

在真机上测试

【讨论】:

以上是关于ios 每次都需要 reCAPTCHA 与/firestore auth (Flutter)的主要内容,如果未能解决你的问题,请参考以下文章

Firebase (Flutter) 验证电话号码始终需要 reCAPTCHA

Google reCaptcha v3 与 google reCaptcha Enterprise

如何在单个页面上显示多个recaptchas?

我做“基于FFT算法与实现”和“FIR滤波器的设计与实现”的实验。。

密钥如何与 reCAPTCHA v3 Enterprise 配合使用?

The reCAPTCHA 啥意思?