首页 文章

Firebase电子邮件验证无法使用ActionCodeSetting

提问于
浏览
0

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

我做了什么:

  • 我使用自动生成的电子邮件验证链接测试了电子邮件验证 . 有效 .

  • 然后,我添加了一个ActionCodeSetting URL,该URL使用添加到XCode项目的Associated Domains的域 . 这样可以在点击验证链接后将用户带回应用 .

  • 问题:电子邮件验证不再有效 .

这是我实现的代码:

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=

以下是上述代码发送的验证网址:

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(和相关的域)来触发应用程序打开?它只会触发应用程序打开,而无需验证用户的电子邮件 .

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

1 回答

  • 2

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

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

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

相关问题