2016-12-13 5 views
1

プロバイダを匿名ユーザーにリンクしようとしています。私は別々にログインすることができます。私はメールアドレスとパスワードを持つアカウントをリンクさ AngularFireは、プロバイダのユーザーIDと、匿名ユーザーのユーザーIDがリンクされた後で同じである必要がありますか?

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

新しいプロバイダを既存のアカウントにリンクすると、匿名であるかどうかにかかわらず、同じuidが保持されます。ただし、既存のFirebaseユーザーに既にリンクされているプロバイダを別のuidにリンクしようとすると、その資格情報がすでに別のアカウントにリンクされているというエラーが表示されます。あなたは上に間違ってそれをやっているようです。匿名ユーザーが以前の匿名ユーザーを効果的にログアウトした後、Googleユーザーにサインインしています。正しい方法は次のとおりです。

最初に匿名でログインします。

次に、現在の匿名ユーザーでlinkWithPopupを呼び出します。

+0

残念ながら、 'auth'または' $ fireAuth() 'から' linkhithPopup() 'を利用できませんでした。 //github.com/firebase/angularfire/issues/764 – Diego

関連する問題