Apple заменяет провайдера электронной почты, если адрес электронной почты не подтвержден - PullRequest
0 голосов
/ 07 апреля 2020

Я читал об этой проблеме в нескольких местах, таких как здесь , но не знаю, какой пользовательский опыт дает пользователям.

Я использую Firebase Auth на iOS (Swift). В моем приложении есть только 2 способа создания учетной записи:

  1. Электронная почта (электронная почта / пароль)
  2. Вход через Apple

Я не уверен, как справиться с этим сценарием, когда Apple заменяет поставщика электронной почты в Firebase:

  1. Пользователь подписывается с параметром # 1 (электронная почта) как john@gmail.com. Мы используем api для подтверждения электронной почты , чтобы отправить электронное письмо пользователю, чтобы подтвердить свою электронную почту.
  2. Этот пользователь по какой-либо причине не открывает электронную почту, чтобы подтвердить свою электронную почту. Таким образом, электронная почта не подтверждена.
  3. Пользователь выходит из приложения.
  4. Вместо того, чтобы пользователь входит в систему с параметром # 1 (электронная почта), пользователь входит в систему с параметром # 2 ( Войдите с Apple). Их адрес электронной почты Apple ID совпадает с вариантом № 1 (электронная почта): john@gmail.com. Мы используем API для входа с учетными данными .

В этом потоке 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 в качестве способа входа в этот конкретный c случай?

1 Ответ

1 голос
/ 08 апреля 2020

В этом случае вы звоните fetchSignInMethodsForEmail, чтобы получить IdP, связанные с этим письмом. Это вернет список с apple.com идентификатором провайдера. Вы информируете пользователя о том, что ему необходимо войти в Apple с этой учетной записью.

В дальнейшем им нужно будет использовать Apple для входа. Единственный способ использовать оба варианта - это проверить электронную почту (посредством проверки электронной почты) после того, как они зарегистрируются с помощью адреса электронной почты / пароля, а также перед тем, как войти в Apple. После подтверждения учетной записи учетные данные Apple автоматически объединяются при входе в систему, а пароль сохраняется в учетной записи.

...