正在处理一些FirAuth
问题,但由于某些原因,我无法确定如何检查用户建议的电子邮件地址是否已被占用。我试过打电话给.fetchProvidersForEmail
,就像前一段时间其他问题中所建议的那样,但不管什么原因,它都不起作用。另外,当涉及到完成处理程序时,我是非常环保的,所以任何有建设性的批评都会受到欢迎。因此,现在,我的代码中与此相关的部分是:
import UIKit
import Firebase
class LoginViewController: UIViewController {
var reply : Bool = true
@IBOutlet weak var emailTxt: UITextField!
@IBAction func nextScreen(sender: UIButton) {
print(emailCheck(emailTxt.text!))
}
func emailCheck(input : String)->Bool{
let pullEmails = FIRAuth.auth()!.fetchProvidersForEmail(input, completion:{
result,error in
var decision : Bool = true
if error == "nil" {
print(error)
self.reply = true
}else{
print(error)
self.reply = false
}
})
return reply
}
}
所以,这会发生什么,回复总是打印,可能是因为我在顶部明确定义了它。不管是哪种方式,完成处理程序都几乎没有在它的值
true
之前等待实际完成。我已经尝试过如何使用它们,以及returns
,但是我想知道是否有一个简单的错误可以解决这个问题。谢谢大家! 最佳答案
我尝试了.fetchProviders(forEmail: String, completion: FIRProviderQueryCallback?)
,如果在FireBase中提供了有效的电子邮件地址,它将在[String]?
中返回其密码。如果有密码,您知道有一个活动帐户:
FIRAuth.auth()?.fetchProviders(forEmail: email, completion: { (stringArray, error) in
if error != nil {
print(error!)
} else {
if stringArray == nil {
print("No password. No active account")
} else {
print("There is an active account")
}
}
})
这是一个小黑客,但我没有发现更好的。披露:我只使用密码验证
如果您正在创建一个用户或登录,您将收到来自回调的
.emailAlreadyInUse
错误。以下是Auth
抛出的所有可能的errors列表。