AngularFire应该是一个提供者的链接与匿名用户链接后的相同吗?

时间:2016-12-13 01:12:38

标签: angularjs firebase firebase-authentication angularfire

我试图将提供商链接到匿名用户。我可以单独登录。

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在链接后是否应与匿名帐户相同?或者我在这里混淆了什么?感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

当您将新提供商链接到现有帐户时,无论它是否是匿名帐户,都应保留相同的uid。但是,如果您尝试将已链接到现有firebase用户的提供程序与另一个uid链接,则会收到一个错误,即该凭据已链接到另一个帐户。你似乎在上面做错了。您是在匿名用户登录后有效登出以前的匿名用户登录Google用户的。正确的方法如下:

您首先匿名登录。

然后在当前的匿名用户上调用linkWithPopup。