使用电子邮件将其他提供商链接到电话验证帐户

时间:2019-04-10 19:34:32

标签: ios firebase-authentication

我正试图阻止用户创建多个帐户。

具体来说,我想检查当前使用非Phone Auth方法登录的用户(Facebook,Google等)之前是否曾经通过Phone Auth登录。

创建电话验证帐户时,我要求用户输入电子邮件地址。创建用户后,我将使用以下方法将电子邮件地址保存到其authUser帐户中:

authData.user.updateEmail(to: email, completion: { (error) in
                // email added successfully
            })

电子邮件地址已正确保存,并且在Firebase身份验证控制台中可见。

但是,当我稍后尝试使用该电子邮件地址查找提供商时,使用

Auth.auth().fetchProviders(forEmail: email, completion: { (providers, error) in
                // providers.count = 0
            })

Auth.auth().fetchSignInMethods(forEmail: email, completion: { (signInMethods, error) in
                // signInMethods == nil
            })

找不到电子邮件。

因此,电子邮件似乎已连接到User,但未连接到提供商或登录方法。

是否可以将电子邮件连接到电话验证提供商数据,以便在查找多个帐户时找到电子邮件?还有另一种无需查询Firestore即可为这只猫换皮的方法吗?我想防止注销的用户访问文档。

1 个答案:

答案 0 :(得分:0)

fetchSignInMethods将不会返回任何结果,即使该电子邮件存在但没有提供者或登录方法也可以登录。

就您而言,您只需更新电子邮件或帐户。这还不够。用户必须使用电子邮件登录。例如,如果用户使用电子邮件链接或密码登录,则fetchSignInMethods将返回这些登录方法。