我试图将提供商链接到匿名用户。我可以单独登录。
var auth = $firebaseAuth();
auth.$signInAnonymously().then(function(firebaseUser) {...}
$scope.signInWithGoogle = function() {
var provider = new firebase.auth.GoogleAuthProvider();
auth.$signInWithPopup(provider)
.then(function(response) {
linkCredentials(response.user);
}).catch(function(error) {
console.error("Authententication failed:", error);
});
}
var linkCredentials = function(credential) {
if(credential) {
var credentials = credential;
}
firebase.auth().currentUser.link(credentials)
.then(function(firebaseUser) {
console.log("Anonymous account successfully upgraded", firebaseUser);
}).catch(function(error) {
console.log("Error upgrading anonymous account", error);
});
}
当我使用电子邮件和密码(即$createUserWithEmailAndPassword
)关联帐户时,新创建帐户的uid
与匿名帐户相同。
Google用户的uid在链接后是否应与匿名帐户相同?或者我在这里混淆了什么?感谢您的帮助。
答案 0 :(得分:0)
当您将新提供商链接到现有帐户时,无论它是否是匿名帐户,都应保留相同的uid。但是,如果您尝试将已链接到现有firebase用户的提供程序与另一个uid链接,则会收到一个错误,即该凭据已链接到另一个帐户。你似乎在上面做错了。您是在匿名用户登录后有效登出以前的匿名用户登录Google用户的。正确的方法如下:
您首先匿名登录。
然后在当前的匿名用户上调用linkWithPopup。