Как связать несколько поставщиков Auth с учетной записью Firebase?

Я не могу успешно сделать, я выполнил следующие шаги, как указано в документах Firebase:

  1. подписан в использовании с помощью существующего поставщика auth (мой случай:facebook).
  2. завершите поток входа для нового поставщика аутентификации до, но не включая, вызова одного из Auth.signInWith методы.(мой случай: я хочу связать электронную почту & пароль и Google OAUth). Итак, это шаг, о котором я не знаю, я создал новый провайдер, использующий var provider = new firebase.auth.GoogleAuthProvider(); а я не сделал Firebase.auth().signInWithPopup(provider) .
  3. затем, чтобы получить authcredential для google, я запускаю var credential = firebase.auth.GoogleAuthProvider.credential( googleUser.getAuthResponse().id_token); (Я получаю неопределенную ошибку googleUser) эта ошибка кажется уместной, так как я не вошел в систему с помощью Google Oauth, но это то, что говорится в 2-х шагах(не для входа)
  4. и затем эта команда для связи с текущим пользователем, который находится на провайдере Facebook auth.currentUser.link(credential)

Я понимаю, что currentUser должен быть связан моему существующему провайдеру (Facebook). Похоже, что переменная учетных данных для google никогда не вычисляется. Любой, у кого есть пример функционального кода, действительно поможет.

1 ответов


Если вы хотите вручную связать учетную запись google и email/pass с существующим пользователем firebase только на facebook, вы можете сделать следующее: Сначала пользователь должен войти в facebook. Ссылка на пользователя google:

var provider = new firebase.auth.GoogleAuthProvider();
auth.currentUser.linkWithPopup(provider);

затем свяжите учетную запись email / pass:

auth.currentUser.linkWithCredential(firebase.auth.EmailAuthProvider.credential(auth.currentUser.email, 'password'))

все эти связанные учетные записи должны быть новыми и еще не связанными.