Firebase将匿名用户帐户转换为永久帐户错误

时间:2016-08-22 21:17:54

标签: firebase firebase-authentication

使用Firebase for web我可以成功创建匿名用户。我还可以创建一个新的电子邮件/密码用户。但是当尝试将匿名用户转换为电子邮件/密码用户时,我收到错误:

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

Firebase会记录此处的步骤"将匿名帐户转换为永久帐户"这里: https://firebase.google.com/docs/auth/web/anonymous-auth

这是帐户链接代码。匿名用户已登录。

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

2 个答案:

答案 0 :(得分:19)

您不应该致电@media print { button { display: none; } } 来升级匿名用户。这将注册一个新用户,注销当前已登录的匿名用户。

您只需要用户的电子邮件和密码即可。相反,IDP提供商(例如谷歌,Facebook)将需要完成他们的完整登录流程以使他们的代币识别用户。不过,我们建议您使用linkWithPopuplinkWithRedirect

示例:

alpr

让我知道这是否有效!

答案 1 :(得分:0)

以匿名用户身份登录后,运行此代码以引发弹出窗口并将您的匿名用户与某些 OAUTH 提供程序连接

const provider = new firebase.auth.FacebookAuthProvider()
firebase.auth().currentUser.linkWithPopup(provider)
console.log(provider)