【问题标题】:Firebase Email verification not working with ActionCodeSettingFirebase 电子邮件验证不适用于 ActionCodeSetting
【发布时间】:2018-12-13 03:38:04
【问题描述】:

我正在尝试实现对用户电子邮件的验证(使用电子邮件模板中的默认验证 URL)和 ActionCodeSetting URL(动态链接)以将用户带回应用程序。我对 Firebase 使用 ActionCodeSetting 的电子邮件验证应该如何工作感到困惑。我已经阅读了所有可用的文档页面,但我仍然不清楚如何正确配置“继续 URL”以不抢占并覆盖默认验证 URL。

我做了什么:

  1. 我使用自动生成的电子邮件验证链接测试了电子邮件验证。有效。
  2. 然后我添加了一个 ActionCodeSetting URL,该 URL 使用添加到 XCode 项目的关联域中的域。这有助于在单击验证链接后将用户带回应用程序。
  3. 问题:电子邮件验证不再有效。

这是我实现的代码:

var actionCodeSettings = ActionCodeSettings.init()
                actionCodeSettings.handleCodeInApp = true
                let user = Auth.auth().currentUser
                let urlString = "https://blaproject.page.link/zCB4"
                actionCodeSettings.setIOSBundleID(Bundle.main.bundleIdentifier!)
                actionCodeSettings.setAndroidPackageName("com.example.android", installIfNotAvailable:true, minimumVersion:"12")

                Auth.auth().currentUser?.sendEmailVerification(with: actionCodeSettings, completion: { (error) in
                    print("verification email sent")
                    print("action code setting URL is: \(String(describing: actionCodeSettings.url))")
                })

这是 Firebase 控制台中电子邮件模板的默认验证网址:

https://blaproject-ea9d6.firebaseapp.com/__/auth/action?mode=&oobCode=

这是上面代码发送的验证 URL:

https://blaproject.page.link?link=https://blaproject-ea9d6.firebaseapp.com//auth/action?apiKey%3DAIzaSyAi1fxd-HdkfXzYJxTpwmB3_mVCy5gvWxA%26mode%3DverifyEmail%26oobCode%3DqjvGoqc1n3ya0OIi_tWIYTpp59DYKgB6Sbj0EymN2IkAAAFkYNutMA%26continueUrl%3Dhttps://blaproject.page.link/zCE4%26lang%3Den&apn=com.example.android&amv=12&ibi=blaproject.blaprojectV0-2&ifl=https://blaproject-ea9d6.firebaseapp.com//auth/action?apiKey%3DAIzaSyAi1fxd-HdkfXzYJxTpwmB3_mVCy5gvWxA%26mode%3DverifyEmail%26oobCode%3DqjvGoqc1n3ya0OIi_tWIYTpp59DYKgB6Sbj0EymN2IkAAAFkYNutMA%26continueUrl%3Dhttps://blaproject.page.link/zCE4%26lang%3Den

所以我的问题是,为什么这个 URL 不验证用户的电子邮件,然后使用继续 URL(和关联的域)来触发应用程序打开?它只会触发应用程序打开,而不验证用户的电子邮件。

感谢您提供的任何提示,以帮助我理解我不理解的内容:)

【问题讨论】:

    标签: firebase firebase-dynamic-links ios-universal-links email-verification


    【解决方案1】:

    当链接触发您的应用打开时。您需要从深层链接解析oobCode。您可以使用 FDL 客户端库来获取深层链接。深度链接的格式以及如何解析代码参考以下文档:https://firebase.google.com/docs/auth/custom-email-handler

    获得代码后,您需要使用auth.applyActionCode(code) API 应用它。这将验证电子邮件。

    验证后,您可以调用user.reload() 来更新用户的emailVerified 属性。如果您使用 Firebase 安全规则,您还可以强制 user.getIdToken(true) 使用更新的已验证电子邮件强制刷新令牌。

    【讨论】:

    • 非常感谢您澄清流程。会试试这个!
    • 您好。你有联系方式吗?想分享一份咨询工作的详细信息。
    猜你喜欢
    • 2016-01-15
    • 1970-01-01
    • 2019-04-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-02-24
    • 2023-03-15
    • 1970-01-01
    相关资源
    最近更新 更多