Firebase - использовать двух провайдеров аутентификации для одного и того же пользователя - PullRequest
0 голосов
/ 10 октября 2018

Для проекта Firebase, содержащего два разных приложения, мне нужно активировать двух разных провайдеров аутентификации для пользователей Firebase.В настоящее время я могу установить (через консоль) провайдера входа в систему Google ИЛИ провайдера почты / пароля, но никогда не для обоих пользователей.

Забавная часть - один из пользователей (разработчик сконсольный доступ) смог включить его, поэтому должен быть способ, но мы не можем понять, как он это сделал.См. Пользователя с обоими поставщиками на снимке экрана ниже.

current users on firebase

текущие методы проверки подлинности:

auth methods

РЕДАКТИРОВАТЬ 14/10/2018

Параметр «одна учетная запись на адрес электронной почты» был отключен.Неудачно.Мы попробовали это: https://firebase.google.com/docs/auth/android/account-linking

, но, похоже, мы не можем заставить его работать с узлом js.

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

после устранения неполадок, боюсь, я просто добавлю еще несколько странных вещей: 1) С отключенной опцией «одна учетная запись на адрес электронной почты», я попробовалчтобы удалить мою учетную запись, а затем добавить его снова с помощью электронной почты \ пароля, это успешно.Затем я попытался войти с помощью Google в приложении: вход не удался, но в FireBase я смог увидеть нового «пустого» (без электронной почты) пользователя с новым UID.Затем я удалил все учетные записи и попытался войти в систему с помощью Google в приложении (обычно это создает учетную запись в FireBase), результат: вход не выполнен, создана пустая учетная запись.Удалил его, попытался создать его вручную на консоли, результат: «учетная запись уже существует».

Итак, после этого мы просто сдались и пошли другим путем для обработки аутентификации.Надеюсь, что это сработает в будущем, поскольку это может быть очень полезно для нас.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

В настоящее время я могу установить (через консоль) провайдера входа в систему Google ИЛИ почтового / парольного провайдера, но никогда не для обоих пользователей.

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

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

Таквам нужно будет выбрать один из следующих вариантов:

  1. Отключить параметр «Одна учетная запись на адрес электронной почты» на экране Способ входа .
  2. Включитьпривязка учетных записей, что является предпочтительным подходом, если это действительно один пользователь, входящий в систему с двумя провайдерами.
  3. Используйте отдельный проект для каждого приложения, что является предпочтительным подходом, если приложения не связаны или будут восприниматьсяпользователем как отдельные приложения.Например: если у вас есть обычное приложение и приложение для пользователей с правами администратора, они должны быть в одном проекте.Но если у вас две разные игры, они не должны использовать один и тот же проект.
0 голосов
/ 10 октября 2018

Это возможно для всех доступных методов аутентификации.Но при использовании, когда пользователь подписался на одного провайдера, он / она может попытаться войти / зарегистрировать другого провайдера.Если у вас уже есть пользователь, вы должны link учетные данные для существующей учетной записи:

auth.currentUser.linkWithPopup(provider).then((result)=>{
    var user = result.user 
}).catch((error)=> {
   // Handle Errors here.
   // ...
});

для получения дополнительной информации доступно здесь

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