[英]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.