Вопрос:

Firebase Преобразование учетной записи анонимного пользователя в постоянную ошибку учетной записи

firebase firebase-authentication

4905 просмотра

1 ответ

1377 Репутация автора

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

auth/provider-already-linked
User can only be linked to one identity for the given provider.

Firebase документирует процедуру здесь в разделе «Преобразование анонимной учетной записи в постоянную» здесь: https://firebase.google.com/docs/auth/web/anonymous-auth

Вот код ссылки на аккаунт. Анонимный пользователь вошел в систему.

return firebase.auth().createUserWithEmailAndPassword(email, password).then(newUser => {

    // Credential is being successfully retrieved. Note "any" workaround until typescript updated.
    let credential = (<any>firebase.auth.EmailAuthProvider).credential(email, password);

    firebase.auth().currentUser.link(credential)
        .then(user => { return user; })
        .catch(err => console.log(err)); // Returns auth/provider-already-linked error.
});
Автор: Aydus-Matthew Источник Размещён: 22.08.2016 09:17

Ответы (1)


23 плюса

501 Репутация автора

Решение

Вы не должны звонить, createUserWithEmailAndPasswordчтобы обновить анонимного пользователя. Это зарегистрирует нового пользователя, выйдя из аккаунта анонимного пользователя.

Все, что вам нужно, это адрес электронной почты и пароль пользователя. Поставщики IDP (например, Google, Facebook), напротив, потребуют завершить весь процесс входа в систему, чтобы получить свои токены для идентификации пользователя. Мы рекомендуем использовать linkWithPopupили linkWithRedirectдля них, хотя.

Пример:

// (Anonymous user is signed in at that point.)

// 1. Create the email and password credential, to upgrade the
// anonymous user.
var credential = firebase.auth.EmailAuthProvider.credential(email, password);

// 2. Links the credential to the currently signed in user
// (the anonymous user).
firebase.auth().currentUser.linkWithCredential(credential).then(function(user) {
  console.log("Anonymous account successfully upgraded", user);
}, function(error) {
  console.log("Error upgrading anonymous account", error);
});

Дай мне знать, если это работает!

Автор: TMSCH Размещён: 23.08.2016 05:27
Вопросы из категории :
32x32