【问题标题】:Firebase auth linking error - User can only be linked to one identity for the given providerFirebase 身份验证链接错误 - 用户只能链接到给定提供商的一个身份
【发布时间】:2017-09-09 21:25:43
【问题描述】:

当用户第一次运行我的应用程序时,它会为他们创建一个匿名帐户,如果他们决定使用更高级别的功能,该帐户将被转换为一个通过电子邮件验证的帐户

匿名登录的代码很简单(直接取自文档)

// No user is signed in.
Auth.auth().signInAnonymously() { (usr, err) in
    if (err == nil) {
        print("Anon User ID \(usr!.uid)")
    } else {
        print("Anon auth error \(String(describing: err!.localizedDescription))")
    }
}

注册时,我使用电子邮件凭据创建一个新帐户,并像这样链接到匿名帐户

Auth.auth().createUser(withEmail: email, password: password) { (user, err) in
    if (err != nil) {
        print("Error registering \(String(describing: err!.localizedDescription))")
    } else {
        let credential = EmailAuthProvider.credential(withEmail: email, password: password)
        Auth.auth().currentUser!.link(with: credential, completion: {(user, err) in
            if (err != nil) {
                // Error
            } else {
                // Linked
            }
        })
    })

问题是每次我得到“用户只能链接到给定提供商的一个身份”

我根本没有在 Firebase 中注册的帐户

帐户、匿名和电子邮件身份验证已成功创建,但无法链接

【问题讨论】:

    标签: swift firebase firebase-authentication


    【解决方案1】:

    您无法关联 2 个现有 Firebase 用户。您只能将新凭据链接到现有用户。 当您注册用户时,您应该使用电子邮件/密码凭证在匿名用户上 currentUser.linkWithCredential,而无需先调用 createUser。这基本上是将匿名用户升级为电子邮件/密码用户。

    【讨论】:

    • link 自 4.x.x 版以来已被删除。这已在参考资料中更新,但需要修复文档。你应该改用linkWithCredential
    • 谢谢,我修好了。
    猜你喜欢
    • 1970-01-01
    • 2023-03-15
    • 2018-10-31
    • 1970-01-01
    • 1970-01-01
    • 2018-03-09
    • 2016-10-12
    • 1970-01-01
    • 2019-01-17
    相关资源
    最近更新 更多