使用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.
});
答案 0 :(得分:19)
您不应该致电@media print {
button { display: none; }
}
来升级匿名用户。这将注册一个新用户,注销当前已登录的匿名用户。
您只需要用户的电子邮件和密码即可。相反,IDP提供商(例如谷歌,Facebook)将需要完成他们的完整登录流程以使他们的代币识别用户。不过,我们建议您使用linkWithPopup
或linkWithRedirect
。
示例:
alpr
让我知道这是否有效!
答案 1 :(得分:0)
以匿名用户身份登录后,运行此代码以引发弹出窗口并将您的匿名用户与某些 OAUTH 提供程序连接
const provider = new firebase.auth.FacebookAuthProvider()
firebase.auth().currentUser.linkWithPopup(provider)
console.log(provider)