ios - 更改使用电子邮件链接验证的 iOS Firebase 用户的电子邮件

标签 ios firebase firebase-authentication

所以我有一个使用 Firebase 的 iOS 应用程序,最初让用户匿名登录,然后允许他们稍后添加一个电子邮件地址,该地址通过调用链接到 Firebase 用户:

Auth.auth().currentUser?.linkAndRetrieveData(with: credential)

一切正常,但我现在遇到了无法更新该用户电子邮件的问题。我认为这可以通过简单地发送另一个电子邮件链接到新电子邮件,然后使用新凭据调用 linkAndRetrieveData 来实现。

然而,这给了我一个 FIRAuthErrorCodeProviderAlreadyLinked 错误,因为用户已经有一个电子邮件地址。我本来希望它只是覆盖现有的电子邮件。然后我尝试/考虑了解决方案:

  1. 取消与电子邮件提供商的链接,然后使用新凭据重新链接。首先,这似乎是不可能的,因为经过电子邮件链接身份验证的用户所声明的“providerId”是“Firebase”,当我将其输入取消链接时,它会失败。其次,这很容易出错,因为您可以成功取消链接第一封电子邮件,然后新电子邮件的链接失败。

  2. 使用提供的“updateEmail”方法 - 这不起作用,因为它假定电子邮件/密码身份验证,而我正在使用电子邮件链接身份验证。即使这确实有效,也意味着有一封未经验证的电子邮件。

所以我想知道如何做到这一点,或者是否真的有可能根本不支持它。我不敢相信这不会得到支持,因为这似乎是一个非常普遍的问题,并且基本上使电子邮件链接身份验证成为不可能。

最佳答案

updateEmail() 是更改登录用户电子邮件的方法,无论用户是如何创建或验证的。你是对的,新的电子邮件地址将成为未验证的。然后可以触发 sendEmailVerification() 方法向用户发送验证电子邮件,以便他们可以验证电子邮件地址。

关于ios - 更改使用电子邮件链接验证的 iOS Firebase 用户的电子邮件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54918077/

相关文章:

node.js - Firebase 函数(用 NodeJS 编写)在从实时数据库中删除对象时从云存储中删除文件

javascript - 如何在 FireBase 和 Angular 中根据用户隐藏元素

ios - Swift - 从 Double 中删除尾随零

iphone - 核心数据限制以及何时不持久保存数据

java - 单击单选按钮后如何更新 Firebase 中的数据?

swift & Firebase : Detect revoked token

javascript - Firebase 身份验证无法使用 Vue 和 Vuex

ios - 如何在 iOs 中获取用户的可用性通知?

ios - 在 iOS 上安装 Phonegap

android - 文件 google-services.json 丢失。没有它,Google 服务插件将无法运行。 (对于 firebase ml 套件)