Firebase: возможно ли добавить новую учетную запись электронной почты / пароля, если эта электронная почта уже используется для учетной записи Google, Microsoft и т. Д.? - PullRequest
1 голос
/ 11 ноября 2019

При способе входа в систему я уже включил «Несколько учетных записей на один адрес электронной почты».

У меня один и тот же адрес электронной почты, подключенный как к учетной записи Google, так и к учетной записи Microsoft - поэтому я успешновозможность создания двух отдельных пользователей в одном экземпляре Firebase с использованием методов входа Google и Microsoft.

Что я не могу сделать, так это создать еще одну учетную запись для метода Email / Password. Если я пытаюсь добавить его через консоль (добавить пользователя электронной почты / пароля), я получаю сообщение об ошибке «уже существует» и общую ошибку, если я пытаюсь добавить его через admin SDK.

Не могли бы вы, пожалуйстапосоветуйте, возможно ли то, что я пытаюсь сделать, и если да, то что мне следует делать?

Редактировать: я должен был прояснить - вопрос в том, чтобы разрешить несколько (несвязанных и полностью независимых) учетных записей, которые совместно используютодин и тот же адрес электронной почты, а не одна учетная запись Firebase, подключенная к нескольким провайдерам.

1 Ответ

0 голосов
/ 11 ноября 2019

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

Свяжите адрес электронной почты и учетные данные пароля с учетной записью пользователя

Чтобы добавить адрес электронной почты и пароль в учетную записьсуществующая учетная запись пользователя:

  1. Войдите в систему, используя любой провайдер или метод аутентификации.
  2. Запросите у пользователя адрес электронной почты и новый пароль.
  3. Создайте AuthCredential объект с адресом электронной почты и паролем:
var credential = firebase.auth.EmailAuthProvider.credential(email, password);
Передача объекта AuthCredential методу linkWithCredential зарегистрированного пользователя:
firebase.auth().currentUser.linkAndRetrieveDataWithCredential(credential).then(function(usercred) {
  var user = usercred.user;
  console.log("Account linking success", user);
}, function(error) {
  console.log("Account linking error", error);
});

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

// Get reference to the currently signed-in user
var prevUser = auth.currentUser;
// Sign in user with another account
auth.signInWithCredential(credential).then(function(user) {
  console.log("Sign In Success", user);
  var currentUser = user;
  // Merge prevUser and currentUser data stored in Firebase.
  // Note: How you handle this is specific to your application
  // After data is migrated delete the duplicate user
  return user.delete().then(function() {
    // Link the OAuth Credential to original account
    return prevUser.linkWithCredential(credential);
  }).then(function() {
    // Sign in with the newly linked credential
    return auth.signInWithCredential(credential);
  });
}).catch(function(error) {
  console.log("Sign In Error", error);
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...