繁体   English   中英

使用电子邮件将其他提供程序链接到Phone Auth帐户

[英]Linking another provider to a Phone Auth account using email

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

具体来说,我想检查当前使用非电话验证方法(Facebook,Google等)登录的用户以前是否已通过电话验证登录。

创建电话身份验证帐户时,我要求用户输入电子邮件地址。 创建用户后,我将使用以下方法将电子邮件地址保存到其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但未连接到提供者或登录方法。

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM