2016-08-22 18 views
9

Web用Firebaseを使用すると、匿名ユーザーを正常に作成できます。新しいメール/パスワードユーザーを作成することもできます。電子メール/パスワードのユーザーに匿名ユーザーを変換しようとすると、しかし、私はエラーを取得: https://firebase.google.com/docs/auth/web/anonymous-authFirebase匿名ユーザーアカウントを恒久アカウントエラーに変換する

auth/provider-already-linked 
User can only be linked to one identity for the given provider. 

Firebaseセクションの下に、ここでの手順を文書化し、ここで「永久アカウントに匿名アカウントを変換します」アカウントリンクコードは次のとおりです。匿名ユーザーがサインインしている。

return firebase.auth().createUserWithEmailAndPassword(email, password).then(newUser => { 

    // Credential is being successfully retrieved. Note "any" workaround until typescript updated. 
    let credential = (<any>firebase.auth.EmailAuthProvider).credential(email, password); 

    firebase.auth().currentUser.link(credential) 
     .then(user => { return user; }) 
     .catch(err => console.log(err)); // Returns auth/provider-already-linked error. 
}); 

答えて

11

あなたは匿名ユーザーをアップグレードするcreateUserWithEmailAndPasswordを呼び出すべきではありません。これにより、新しいユーザーがサインインされ、現在サインインされている匿名ユーザーがサインアウトされます。

必要なものは、ユーザーのメールアドレスとパスワードです。反対に、IDPプロバイダ(Google、Facebookなど)は、ユーザーを識別するためにトークンを取得するために、完全なログインを完了する必要があります。ただし、linkWithPopupまたはlinkWithRedirectを使用することをおすすめします。

例:

// (Anonymous user is signed in at that point.) 

// 1. Create the email and password credential, to upgrade the 
// anonymous user. 
var credential = firebase.auth.EmailAuthProvider.credential(email, password); 

// 2. Links the credential to the currently signed in user 
// (the anonymous user). 
firebase.auth().currentUser.linkWithCredential(credential).then(function(user) { 
    console.log("Anonymous account successfully upgraded", user); 
}, function(error) { 
    console.log("Error upgrading anonymous account", error); 
}); 

それが動作するかどうか、私に教えてください!

+2

firebase.User.prototype.linkは推奨されていません。代わりにfirebase.User.prototype.linkWithCredentialを使用してください。 –

+0

ありがとうございました! – TMSCH

+1

この回答をお寄せいただきありがとうございます.Firebaseを使用しているクライアントのモバイルアプリでも同じロジックが適用されます。私はiOSアプリで同じ問題を抱えていましたが、このロジックによって修正されました。これに関するFirebaseの文書はあまり明確ではありません - (もし誰かがこれを読んでいれば)これを強調すべきです。 – Peza

関連する問題