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
reCAPTCHA 在 iOS 10 UIWebView 中不起作用