【问题标题】:Apple replaces email provider if email not verified如果电子邮件未验证,Apple 将替换电子邮件提供商
【发布时间】:2020-07-19 04:48:01
【问题描述】:

我已在多个地方(例如here)阅读过有关此问题的信息,但不知道该给用户什么样的用户体验。

我在 iOS (Swift) 上使用 Firebase 身份验证。在我的应用中,用户创建帐户的方式只有两种:

  1. 电子邮件(电子邮件/密码)
  2. 使用 Apple 登录

我不确定如何处理 Apple 替换 Firebase 中的电子邮件提供商的这种情况:

  1. 用户使用选项#1(电子邮件)注册为john@gmail.com。我们使用 apisend email verification 向用户发送电子邮件以验证他们的电子邮件。
  2. 此用户出于某种原因没有打开电子邮件来验证他们的电子邮件。因此,电子邮件未经过验证。
  3. 用户退出应用程序。
  4. 用户使用选项 #2(使用 Apple 登录)登录,而不是使用选项 #1(电子邮件)登录。他们的 Apple ID 电子邮件与选项 #1(电子邮件)相同:john@gmail.com。我们使用 API sign in with credential

在此流程中,Apple 替换了电子邮件提供商,因为他们的常规电子邮件和 Apple ID 电子邮件相同(并且常规电子邮件未经过验证)。如果电子邮件经过验证,Firebase 在这种情况下会自动链接电子邮件和 Apple 帐户......而不是替换。

如果您稍后再次尝试使用选项 #1(电子邮件)创建帐户,您将收到此错误,因为它已被 Apple 使用:

Error Domain=FIRAuthErrorDomain Code=17007 "The email address is already in use by another account." UserInfo={NSLocalizedDescription=The email address is already in use by another account., FIRAuthErrorUserInfoNameKey=ERROR_EMAIL_ALREADY_IN_USE}

如果用户想使用电子邮件登录但现在不能登录,我不确定在此处为用户体验做些什么。我是否告诉用户:“抱歉,由于您没有验证您的电子邮件,Apple 替换了电子邮件提供商作为选项,现在您必须使用 Apple 登录您的帐户”?或者我们可以为用户提供更好的用户体验吗?无论如何,在这种特定情况下,是否可以轻松地允许该用户同时使用电子邮件和 Apple 作为登录方式?

【问题讨论】:

    标签: ios swift firebase authentication firebase-authentication


    【解决方案1】:

    在这种情况下,您致电 fetchSignInMethodsForEmail 以获取与此电子邮件关联的 IdP。这将返回一个带有 apple.com 提供者 ID 的列表。您通知用户他们需要使用 Apple 登录该帐户。

    今后,他们将需要使用 Apple 登录。使用这两种方法的唯一方法是,在他们使用电子邮件/密码注册之后以及在他们使用 Apple 登录之前验证电子邮件(通过电子邮件验证)。验证帐户后,登录时会自动合并 Apple 凭据,并将密码保留在帐户中。

    【讨论】:

    • 感谢您的回复!快速跟进:当您说:“您通知用户他们需要使用 Apple 登录该帐户。” --> 这是否意味着用户必须使用 Apple 登录?基本上,我会通知用户,从现在开始,只有 Apple 登录有效,而普通电子邮件/密码无效?这是我主要关心的问题 - 如果有办法让他们继续使用这两种选择,即使 Apple 取代了电子邮件作为提供商。
    • 今后他们将需要使用 Apple 登录。使用这两种方法的唯一方法是,在他们使用电子邮件/密码注册之后以及在他们使用 Apple 登录之前验证电子邮件(通过电子邮件验证)。验证帐户后,Apple 凭据会在登录时自动合并,密码会保留在帐户中。将添加到答案。
    • 谢谢,很高兴得到澄清!非常感谢您抽出宝贵时间回答这个问题,非常有帮助!
    • 很好的解释谢谢 - 只有一件事:我的 Firebase 的电子邮件/密码已经过验证,但它仍然没有链接这两个帐户。那么-您所说的“...如果您验证电子邮件(通过电子邮件验证)...”是什么意思-您是指与Apple验证同一电子邮件吗?还是您的意思是通过 Firebase 验证电子邮件?再一次,后来我做了,但仍然没有工作。
    猜你喜欢
    • 2022-12-31
    • 1970-01-01
    • 2020-03-09
    • 1970-01-01
    • 1970-01-01
    • 2022-01-01
    • 2018-08-06
    • 1970-01-01
    • 2019-05-09
    相关资源
    最近更新 更多