Существует хорошо документированная ошибка (или, может быть, ее лучше называть «индивидуальным шаблоном»), возникающая при аутентификации Firebase, когда у пользователя есть уже существующая учетная запись, связанная с входом в Google, и затем они пытаются использоватьFacebook Войти с тем же адресом электронной почты, и Firebase выбрасывает error.code
из auth/account-exists-with-different-credential
Здесь, с ноября 2016 года, есть более старая Q / A: Firebase перезаписывает вход в аккаунт Google
Лучше всего выглядит решение с мая 2017 года: https://stackoverflow.com/a/44040373/51482
Однако принятый ответ от мая 2017 года фактически не работает для React Native (закомментированные примеры относятсяв JS Web), и, как представляется, не существует каких-либо указаний для наилучшего пользовательского опыта, который мы можем предоставить в этой ситуации, используя платформу React Native.
Вот несколько вопросов, которые я могу задать, где ответы могут быть заданыожидания того, как решить эту проблему наилучшим образом:
- Есть ли способ связать существующие Google и Facebook в соответствии сучетные записи без необходимости дополнительного входа пользователя в систему с помощью входа в Google?
- Можно ли использовать выброшенное значение
error.email
, извлечь соответствующую учетную запись Firebase Auth / Google на основе этого электронного письма, а затемсвязать учетную запись Google со значением Facebook error.credential
? - В комментарии к вышеупомянутому ответу написано
If you have your own mechanism to get that token, you get it for that Google email user and sign in
.Есть ли какие-либо рекомендуемые способы найти этот механизм? - Является ли единственный известный шаблон UX, чтобы заставить пользователя прочитать сообщение о существующей учетной записи Google, направить его для входа в учетную запись Google, а затем нажатьих связать учетную запись Facebook на другом экране?
Документация Firebase довольно солидна между родной iOS, родной Android и веб-платформами, но React Native является своего рода промежуточным звеном между всеми этими кодовыми базамии я пытаюсь заполнить пробелы для хорошего пользовательского опыта аутентификации с этим сценарием.