В настоящее время я разрабатываю стартовый набор для своих приложений Firebase + Firestore + React.
Я застрял, пытаясь найти лучший способ обработки нескольких методов входа для каждого пользователя.
Сначала я пытался сделать это, используя Firebase Auth с активированным ограничением «одна учетная запись на электронную почту» (это по умолчанию).
Но после МНОГО неудачных попыток добиться моегоЯ решил отказаться и переключить свою аутентификацию Firebase на «разрешить несколько учетных записей на одну электронную почту» .
Моя главная цель здесь:
Если я предлагаю своим пользователям 3 метода регистрации и регистрации (например: электронная почта / пароль + Google + Facebook), я чувствую, что должен соблюдать эти 3 метода независимо от того, в каком порядке онивозможно, был использован .
Дело в том, что с ограничением «одна учетная запись на электронную почту» это просто невозможно, потому что, если ваш пользователь впервые зарегистрируется с помощью электронной почты / пароля, Firebase удалит его пароль, если он зарегистрируется в Google.в следующий раз.И он сделает это так тихо, что ваш пользователь никогда не узнает, почему его пароль больше не работает (по крайней мере, это я понял из моего исследования и вопроса к поддержке Firebase).
Это по соображениям безопасности, поскольку поставщик Google имеет более высокий приоритет по сравнению с другими поставщиками (в основном потому, что в этом случае электронная почта Google возвращается неявно проверенной).Я понимаю это, но я просто думаю, что это будет ужасно для пользователя, если вы удалите пароль пользователя, не сообщая ему, что это произошло.
У меня есть еще один вопрос, который углубляется в эту проблему
Но с этим вопросом здесь я хотел бы знать следующее:
При разрешении нескольких учетных записей на пользователя мне придется сохранять данные своих пользователей в Firestore, используя их email
как их uniqueID
, потому что при использовании нескольких учетных записей / методов входа для электронной почты каждая учетная запись будет иметь различную uid
, сгенерированную системой Firebase Auth, но все они должны иметь доступ к одной и той же учетной записи на моемприложение, следовательно, мне придется использовать их email
как uniqueID
).
Примечание: С точки зрения моего приложения: каждая учетная запись в Firebase Auth, использующая один и тот же адрес электронной почты, соответствует одному и тому же пользователю.
Например:
myUser@gmail.com регистрация с использованием адреса электронной почты (отправьте ссылку для подтверждения своей электронной почты)
Firebase Auth создает одну учетную запись для myUser @ gmail.ком / электронный-пароль.uid = x
myUser@gmail.com регистрация с помощью входа в Google
Auth Firebase создает другую учетную запись для myUser@gmail.com/ Google-вход.uid = y
myUser@gmail.com регистрация через Facebook Войти
Firebase auth создает другую учетную запись для myUser@gmail.com/ facebook-входа.uid = z
Поскольку каждая учетная запись будет иметь различный uid
, я предоставлю им всем доступ к одним и тем же данным в Firestore, используя их email
как uniqueID
,который будет одинаковым для каждой учетной записи, в данном случае.
ВОПРОС
Хотя это кажется для решения моей проблемы, я беспокоюсьо возможных осложнениях, которые могут привести в будущем.Любой из вас, более опытный разработчик Firebase, может подумать о причине, по которой мне не следует решать проблему, используя описанный выше подход?
Помня об этом с точки зрения моего приложения: "пользователь - это электронная почта ", а не учетная запись в Firebase Auth.У каждого пользователя может быть 1, 2 или 3 учетных записи в Firebase Auth.
Вы видите потенциальные проблемы / конфликты с:
- Правила безопасности Firestore?
- Облачные функциидля Firebase?
- Какой-нибудь случай с firebase-admin?
- Какой-то конфликт систем обмена сообщениями?
- Не знаю ... У меня тут мозговой штурм.
Спасибо за помощь.