Ответ 1
Чтобы ответить на последний вопрос, причина, по которой вы сталкиваетесь с этой ошибкой, заключается в том, что на самом деле вы не получаете учетные данные с var credential = Firebase.auth.GoogleAuthProvider()
данными var credential = Firebase.auth.GoogleAuthProvider()
но с идентификатором поставщика. Поэтому, когда вы пытаетесь link()
с идентификатором провайдера, он просто не работает (я проверил, что работает с той же ошибкой из-за этого раздела вашего кода).
Фактически вы не хотите подписывать пользователя с учетными данными Google, так как это выведет вашего анонимного пользователя и войдите в систему с помощью Google. Вы просто хотите связать текущего пользователя с некоторыми учетными данными Google, которые вы можете использовать linkWithPopup
метода linkWithPopup
(я переименовал переменные, чтобы сделать немного больше смысла).
fromAnonymousToGoogle: function () {
// Authenticate with the first user then save the currentUser to a local variable
var anonUser = Firebase.auth().currentUser
// Authenticate with a second method and get a credential
var provider = new Firebase.auth.GoogleAuthProvider();
anonUser.linkWithPopup(provider).then(function(result) {
googleToken = result.credential;
console.log(googleToken);
}).catch(function(error) {
console.error("Google sign in failed", error);
});
},
Протестировав это самостоятельно, это, по-видимому, способ приблизиться к их привязке, используя всплывающее окно, наиболее точно соответствующее вашему первоначально предоставленному коду.