我的应用程序有脸书和电子邮件密码登录与防火墙。现在,对于那些与Facebook签约的用户,我不想核实他们的电子邮件。但在Auth.auth().currentUser?.isEmailVerified中,它的返回始终是假的。那么,还有什么其他方法可以检测到用户在facebook登录吗?我知道我可以在登录前在用户默认情况下存储值,但在卸载和重新安装应用程序之后,我将失去该用户默认设置。而firebase则让用户登录。我可以使用密钥链,但如果firebase直接提供,那么这将使编码变得容易。
发布于 2018-08-28 12:48:57
我找到了一种使用firebase方法的解决方案:
if let providerData = Auth.auth().currentUser?.providerData {
for userInfo in providerData {
switch userInfo.providerID {
case "facebook.com":
print("Facebook Login")
//isVerifiededUser = true
default:
print("provider is \(userInfo.providerID)")
}
}
}发布于 2018-08-28 12:23:06
您可以使用:
if let user = Auth.auth().currentUser {
if FBSDKAccessToken.current() != nil {
// logged in using facebook
}
else {
// logged in using manual email/password method
}
}因此,您可以发送验证电子邮件,只有那些谁是登录使用电子邮件/密码方法。
发布于 2018-08-28 10:10:47
Firebase没有提供显示用于创建Firebase帐户的第一种方法的方法。您将有一个列表的所有供应商附加到一个消防用户与他们的电子邮件/电话号码附加到他们。
默认情况下,Firebase只设置为Google SignIn验证的电子邮件,对于其他供应商,Firebase行为是设置false (尽管有时它会随机设置电子邮件验证为真)。的原因是,Firebase不能保证电子邮件是由facebook在其平台上验证的,但在Google的情况下是有信任的。
一种选择是,你总是发送验证电子邮件,无论是facebook还是电子邮件8月。第二,您不使用电子邮件密码登录,而是使用新的电子邮件链接身份验证,这消除了在密码登录中所需的电子邮件。
编辑:
如果一次只允许使用一种方法,则可以从firebase用户获取提供者列表,并检查提供程序列表是否存在“密码”签名方法,在检查电子邮件验证后发送验证邮件,否则不要发送电子邮件并继续应用程序。
以下是电子邮件链接身份验证的资源:https://firebase.google.com/docs/auth/ios/email-link-auth
https://stackoverflow.com/questions/52055071
复制相似问题