프로젝트의이 부분을 수행하는 데 너무 가깝습니다. 나는 많은 것을 배웠지 만 이것을 볼 수는 없다. 전자 메일 주소가 이미 다른 사용자에 의해 사용되고 있는지 확인하기 위해 노력하고 있습니다.Firebase 사용자 이름을 반환 할 때의 iOS 비동기 작업 문제
이func emailCheck(input : String, result:(canRegister: Bool?) -> Void){
var canRegister : Bool?
FIRAuth.auth()?.signInWithEmail(input, password: " "){(user, error) in
if error != nil {
if(error?.code == 17009){
print("Wrong Password")
canRegister = false
}else if(error?.code == 17011){
print("Unknown User")
canRegister = true
}else{
canRegister = false
}
}
}
}
이 모든 Async
일이 나에게 단지 6 시간 이전, 그래서 당신이 어떤 제안이 있으면 알려 주시기 바랍니다 :이 작업을 수행하려면이 코드를 사용하고 있습니다. 버튼을 누를 때이 기능은 그럼 그냥 이렇게하면 호출됩니다 어떤 이유
print(emailCheck(emailTxt.text!){(canRegister : Bool?) -> Void in})
, 이것은하지
true
,
false
또는
nil
을 빈 반환합니다. 그것은 단지
()
을 반환하지만, 올바른 암호를 전달할 때
Wrong Password
을 반환합니다. 관련이 있는지 확실하지 않습니다. 아무도 이것으로 손을 빌려줄 수 있습니까? 감사합니다 여러분!
추가 정보는는 제안 후, 코드 및 코드에 대한 참조는 이제 다음과 같습니다
class LoginViewController: UIViewController {
@IBAction func nextScreen(sender: UIButton) {
emailCheck(emailTxt.text!) { isValid in
if isValid {
print("Valid!")
} else {
print("Invalid!")
}
}
}
func emailCheck(input: String, callback: (isValid: Bool) -> Void) {
FIRAuth.auth()?.signInWithEmail(input, password: "") { (user, error) in
var canRegister = false
if error != nil {
if (error?.code == 17009) {
//wrong password error
} else if(error?.code == 17011) {
//email doesn't exist
canRegister = true
}
}
callback(isValid: canRegister)
}
}
이 뒤에 생각 과정은 (만 중요한 부분을 포함) 반환 코드 인 경우 그 사용자가 존재하지 않으면 전자 메일 계정이 열리게되어 따라서 canRegister
이 허용됩니다. 그렇지 않으면 빈 암호가 전달 된 경우 계정이 존재하므로 등록되어 있지 않습니다. 사용. 위로 함수 호출에
var canRegister = false
: 현재, canRegister
이 같은 정의된다 무엇이든 동일한 값을 반환합니다.
업데이트 된 코드가 나에게 올바른 보인다. 어떤 이유로 Firebase에서 오류 코드 17011이 다시 발생하지 않는 것 같습니다. 자신의 문서를 파고 들자면 API가 예상대로 작동하지 않는다고 생각합니다. 에 따르면이 페이지는 (https://firebase.google.com/docs/reference/ios/firebaseauth/interface_f_i_r_auth_errors)는'FIRAuthErrorCodeUserNotFound' 오류가 _ "사용자 계정이 아니 었 나타냅니다 (이 사용한 17011 코드와 일치) 사용자 계정이 삭제 된 경우 발견했다.이 발생할 수 있습니다. "_ 그것은 내게 분명하지 않다 즉 해당 오류가 발생하는 경우에만 경우 ... – dbburgess
을 어떤 경우에, 당신이 시도하고있는 무슨의 루트에 더 받고 너를 위해 그들이 처리하는 걸 처리하려고하는 것 같아. 은'createUserWithEmail' 방법의 [워드 프로세서] (https://firebase.google.com/docs/reference/ios/firebaseauth/interface_f_i_r_auth.html#aeaee7fcef878990954f8e72f7278cd7d) 그것이 그렇게 보이는 'FIRAuthErrorCodeEmailAlreadyInUse' 오류를 발생시킬 수라고 당신이 당신 자신을 다루려고 노력하고있는 것입니다. 단순히 오류를 생성하고이 오류를 처리하지 않는 이유는 무엇입니까? – dbburgess
@dbburgess 당신은 그것이 무엇인지 압니까? '... signInWithEmail (input, password : "") ...''password'에는 빈 공간이 없었기 때문에 firebase은 빈 암호로 그것을 읽지 않았습니다. 'nil'은 에러를 발생시키지 않습니다. 모든 도움을 주셔서 감사합니다! – Ethan