所以我有一个使用 Firebase 的 iOS 应用程序,最初让用户匿名登录,然后允许他们稍后添加一个电子邮件地址,该地址通过调用链接到 Firebase 用户:
Auth.auth().currentUser?.linkAndRetrieveData(with: credential)
一切正常,但我现在遇到了无法更新该用户电子邮件的问题。我认为这可以通过简单地发送另一个电子邮件链接到新电子邮件,然后使用新凭据调用 linkAndRetrieveData 来实现。
然而,这给了我一个 FIRAuthErrorCodeProviderAlreadyLinked 错误,因为用户已经有一个电子邮件地址。我本来希望它只是覆盖现有的电子邮件。然后我尝试/考虑了解决方案:
取消与电子邮件提供商的链接,然后使用新凭据重新链接。首先,这似乎是不可能的,因为经过电子邮件链接身份验证的用户所声明的“providerId”是“Firebase”,当我将其输入取消链接时,它会失败。其次,这很容易出错,因为您可以成功取消链接第一封电子邮件,然后新电子邮件的链接失败。
使用提供的“updateEmail”方法 - 这不起作用,因为它假定电子邮件/密码身份验证,而我正在使用电子邮件链接身份验证。即使这确实有效,也意味着有一封未经验证的电子邮件。
所以我想知道如何做到这一点,或者是否真的有可能根本不支持它。我不敢相信这不会得到支持,因为这似乎是一个非常普遍的问题,并且基本上使电子邮件链接身份验证成为不可能。
最佳答案
updateEmail() 是更改登录用户电子邮件的方法,无论用户是如何创建或验证的。你是对的,新的电子邮件地址将成为未验证的。然后可以触发 sendEmailVerification() 方法向用户发送验证电子邮件,以便他们可以验证电子邮件地址。
关于ios - 更改使用电子邮件链接验证的 iOS Firebase 用户的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54918077/