链接后,AngularFire 提供者的 uid 应该与匿名用户的 uid 相同吗?

AngularFire should a provider's uid be the same as an anonymous user's uid after they are linked?

我正在尝试 link 匿名用户的提供商。我可以分别登录。

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);
    });
}

当我link使用电子邮件和密码创建一个帐户(即$createUserWithEmailAndPassword)时,创建的帐户的uid是和匿名账号一样。

Google 用户的uid 是否应该与linked 后的匿名帐户相同?还是我在这里混淆了事情?提前感谢您的帮助。

当您 link 一个现有帐户的新提供商时,无论它是否是匿名的,相同的 uid 应该保持不变。但是,如果您尝试 link 一个已经 linked 到具有不同 uid 的现有 firebase 用户的提供者,您将收到一个错误,指出该凭证已经 linked 到另一个帐户。您似乎在上面做错了。在匿名用户登录有效注销之前的匿名用户后,您正在登录 google 用户。正确的做法如下:

您首先匿名登录。

然后您对当前匿名用户调用 linkWithPopup。