запретить вход в Google, если пользователь уже зарегистрировался по электронной почте и паролю - PullRequest
0 голосов
/ 27 апреля 2020

Я использую Angular с аутентификацией Firebase с двумя вариантами аутентификации:

  • С электронной почтой и паролем
  • С Google

По умолчанию в firebase, если вы sign up with email and password, в списке пользователей для аутентификации создается новый пользователь.

this.afAuth.auth.createUserWithEmailAndPassword(email, password)

Sign up with email and password

Если вы затем sign in with gmail используете тот же адрес электронной почты, Firebase меняет поставщика на Google.

this.afAuth.auth.signInWithPopup(provider)

Sign in with google

После этого пользователь этого письма не сможет больше sign in using email and password, так как он signed in with google ,

Есть ли способ предотвратить sign in with google, если у пользователя уже есть опция signed up with email and password? Может быть, отправив указанный параметр c при вызове метода signInWithPopup firebase или установив для параметра значение GoogleAuthProvider.

В firebase есть опция, которая позволяет использовать несколько учетных записей для одного электронного письма, но я не я не хочу использовать эту опцию.

multiple accounts per email

1 Ответ

0 голосов
/ 28 апреля 2020

Насколько мне известно, это невозможно с предварительно встроенным пользовательским интерфейсом Firebase Auth, но вы можете делать что-то вроде того, что вы хотите, через пользовательский поток входа в систему.

Каждый из провайдеров входа доступен как отдельный метод, как вход в систему с электронной почтой и паролем. Таким образом, у вас может быть кнопка входа в систему с помощью кнопки Google, которая запускает только всплывающее окно с помощью всплывающего окна Google, и еще одну кнопку входа с помощью кнопки электронной почты, которая выполняет вход с помощью электронной почты напрямую и требует, чтобы адрес электронной почты был введен в поле ввода.

Теперь, если пользователь заканчивает тем, что использует оба, учетные записи будут связаны, но в этом случае это не плохо, потому что у пользователя все еще есть выбор, хотят ли они войти в систему с Google или войти по электронной почте. и если они выберут один в один день и один в другой день, или на разных устройствах разными способами, это не будет другой учетной записью, что может сбить с толку.

Re: ваш комментарий для Дуга,

Разве нельзя отклонить вход в Google, если электронное письмо подписано провайдером электронной почты?

Вы могли бы сделать это, хотя, опять же, не через предварительно созданный пользовательский интерфейс, но я думаю, что поведение будет довольно запутанным для пользователя, если он намеренно нажмет кнопку входа с помощью кнопки Google.

Имейте в виду, что недостатком использования предварительно встроенного пользовательского интерфейса является то, что вам необходимо самостоятельно решать такие проблемы, как сброс пароля.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...