Firebase iOS 인증 오류 처리하기

인증 메소드의 완료 콜백이 값이 nil이 아닌 NSError 인수를 받으면 오류가 발생한 것입니다. 제품 코드에서 이 인수를 적절한 오류 처리 로직으로 전달하려면 오류 코드를 아래의 공통 오류 및 메소드별 오류 목록과 대조하여 확인해야 합니다.

일부 오류는 특정한 사용자 조치를 통해 해결할 수 있습니다. 예를 들어 FIRAuthErrorCodeUserTokenExpired는 사용자를 다시 로그인 처리하면 해결할 수 있고 FIRAuthErrorCodeWrongPassword는 사용자에게 올바른 비밀번호를 입력하라고 요청하여 해결할 수 있습니다.

FIRAuthErrorCodeNetworkError 또는 FIRAuthErrorCodeTooManyRequests의 경우를 제외하면 실패한 작업을 같은 인수로 재시도하면 절대로 성공할 수 없습니다. 작업이 서버 측에 효과가 있는지에 대해 근거 없이 단정을 지어서는 안 됩니다.

오류를 조사하거나 기록할 때는 userInfo 딕셔너리를 살펴보세요. FIRAuthErrorNameKey는 오류 식별을 위한 교차 플랫폼 오류 이름 문자열을 포함합니다. NSLocalizedDescriptionKey는 오류에 대한 설명을 포함합니다. 이 설명은 사용자가 아닌 개발자를 위한 것입니다. 근본적인 오류가 있는 경우 NSUnderlyingErrorKey가 문제의 오류를 발생시킨 근본적인 오류를 포함합니다.

userInfo 딕셔너리에는 위에서 나열한 주요 필드 외에도 오류 진단에 유용한 각종 필드가 있을 수 있습니다.

모든 API 메소드의 공통 오류 코드

코드 의미
FIRAuthErrorCodeNetworkError 작업 중에 네트워크 오류가 발생했음을 나타냅니다.
FIRAuthErrorCodeUserNotFound 사용자 계정을 찾을 수 없었음을 나타냅니다. 사용자 계정이 삭제된 경우 발생할 수 있습니다.
FIRAuthErrorCodeUserTokenExpired 현재 사용자의 토큰이 만료되었음을 나타냅니다. 예를 들어 사용자가 다른 기기에서 계정 비밀번호를 변경했을 수 있습니다. 사용자에게 이 기기에서 다시 로그인하라는 메시지를 띄워야 합니다.
FIRAuthErrorCodeTooManyRequests 호출 기기에서 Firebase 인증 서버로 비정상적인 횟수만큼 요청이 이루어진 후 요청이 차단되었음을 나타냅니다. 조금 후에 다시 시도하세요.
FIRAuthErrorCodeInvalidAPIKey 애플리케이션 구성의 API 키가 유효하지 않음을 나타냅니다.
FIRAuthErrorCodeAppNotAuthorized 앱이 제공한 API 키로 Firebase 인증을 사용할 권한이 없음을 나타냅니다. Google API 콘솔로 가서 사용자 인증 정보 탭에서 사용 중인 API 키의 허용 목록에 애플리케이션의 번들 ID가 등록되어 있는지 확인하세요.
FIRAuthErrorCodeKeychainError 키체인 액세스 중에 오류가 발생했음을 나타냅니다. NSError.userInfo 딕셔너리 내의 NSLocalizedFailureReasonErrorKey 필드와 NSUnderlyingErrorKey 필드에 오류에 대한 추가 정보가 있습니다.
FIRAuthErrorCodeInternalError 내부 오류가 발생했음을 나타냅니다. 전체 NSError 객체와 관련된 오류를 신고해 주세요.

메소드별 오류 코드

FIRAuth

fetchProvidersForEmail:completion:

코드 의미
FIRAuthErrorCodeInvalidEmail 이메일 주소의 형식이 잘못되었음을 나타냅니다.

signInWithEmail:password:completion:

코드 의미
FIRAuthErrorCodeOperationNotAllowed 이메일 및 비밀번호 계정의 사용 설정이 되어 있지 않음을 나타냅니다. Firebase 콘솔의 인증 섹션에서 사용 설정하세요.
FIRAuthErrorCodeInvalidEmail 이메일 주소의 형식이 잘못되었음을 나타냅니다.
FIRAuthErrorCodeUserDisabled 사용자의 계정이 사용 중지 상태임을 나타냅니다.
FIRAuthErrorCodeWrongPassword 사용자가 틀린 비밀번호로 로그인을 시도했음을 나타냅니다.

signInWithCredential:completion:

코드 의미
FIRAuthErrorCodeInvalidCredential 제공받은 사용자 인증 정보가 유효하지 않음을 나타냅니다. 사용자 인증 정보의 기한이 다했거나 형식이 잘못되었을 때 발생할 수 있습니다.
FIRAuthErrorCodeInvalidEmail 사용자 인증 정보가 EmailPasswordAuthCredential 유형인 경우 이메일 주소의 형식이 잘못되었음을 나타냅니다.
FIRAuthErrorCodeOperationNotAllowed 사용자 인증 정보가 나타내는 ID 제공업체 계정이 사용 설정되어 있지 않음을 나타냅니다. Firebase 콘솔의 인증 섹션에서 사용 설정하세요.
FIRAuthErrorCodeEmailAlreadyInUse 사용자 인증 정보에 담긴 이메일 주소(예: Facebook 액세스 토큰에 담긴 이메일 주소)를 기존 계정이 이미 사용 중이므로 이 로그인 방법으로 인증할 수 없음을 나타냅니다. 이 사용자의 이메일 주소에 fetchProvidersForEmail을 호출하여, 반환된 로그인 제공업체 중 하나로 로그인하라는 메시지를 띄우세요. Firebase 콘솔의 인증 설정 아래에서 '이메일 주소당 계정 1개' 설정이 사용 설정 상태일 때만 발생하는 오류입니다.
FIRAuthErrorCodeUserDisabled 사용자의 계정이 사용 중지 상태임을 나타냅니다.
FIRAuthErrorCodeWrongPassword 사용자 인증 정보가 EmailPasswordAuthCredential 유형인 경우 사용자가 잘못된 비밀번호로 로그인을 시도했음을 나타냅니다.

signInAnonymouslyWithCompletion:

코드 의미
FIRAuthErrorCodeOperationNotAllowed 익명 계정의 사용 설정이 되어 있지 않음을 나타냅니다. Firebase 콘솔의 인증 섹션에서 사용 설정하세요.

signInWithCustomToken:completion:

코드 의미
FIRAuthErrorCodeInvalidCustomToken 맞춤 토큰의 유효성 검사 오류를 나타냅니다.
FIRAuthErrorCodeCustomTokenMismatch 서비스 계정과 API 키가 서로 다른 프로젝트에 속함을 나타냅니다.

createUserWithEmail:password:completion:

코드 의미
FIRAuthErrorCodeInvalidEmail 이메일 주소의 형식이 잘못되었음을 나타냅니다.
FIRAuthErrorCodeEmailAlreadyInUse 로그인 시도에 사용된 이메일 주소가 이미 존재함을 나타냅니다. fetchProvidersForEmail을 호출하여 사용자가 어느 로그인 시스템을 사용했는지 확인하고, 사용자에게 그중 한 가지 방법으로 로그인하라는 메시지를 띄우세요.
FIRAuthErrorCodeOperationNotAllowed 이메일 및 비밀번호 계정의 사용 설정이 되어 있지 않음을 나타냅니다. Firebase 콘솔의 인증 섹션에서 사용 설정을 하세요.
FIRAuthErrorCodeWeakPassword 너무 안전성이 낮은 비밀번호를 설정하려고 했음을 나타냅니다. NSError.userInfo 딕셔너리 개체 내의 NSLocalizedFailureReasonErrorKey 필드에 사용자에게 표시할 수 있는 자세한 설명이 있습니다.

signOut:

코드 의미
FIRAuthErrorCodeKeychainError 키체인 액세스 중에 오류가 발생했음을 나타냅니다. NSError.userInfo 딕셔너리 내의 NSLocalizedFailureReasonErrorKey 필드와 NSUnderlyingErrorKey 필드에 오류에 대한 추가 정보가 있습니다.

FIRUser

FIRUser 작업의 공통 오류

코드 의미
FIRAuthErrorCodeInvalidUserToken 로그인한 사용자의 세션 정보를 담고 있는 갱신 토큰이 유효하지 않음을 나타냅니다. 사용자에게 이 기기에서 다시 로그인하라는 메시지를 띄워야 합니다.
FIRAuthErrorCodeUserDisabled 사용자의 계정이 사용 중지 상태이며, Firebase 콘솔의 '사용자' 패널에서 다시 사용 설정을 할 때까지 사용할 수 없음을 나타냅니다.

reauthenticateWithCredential:completion:

코드 의미
FIRAuthErrorCodeInvalidCredential 제공받은 사용자 인증 정보가 유효하지 않음을 나타냅니다. 사용자 인증 정보의 기한이 다했거나 형식이 잘못되었을 때 발생할 수 있습니다.
FIRAuthErrorCodeInvalidEmail 사용자 인증 정보가 EmailPasswordAuthCredential 유형인 경우 이메일 주소의 형식이 잘못되었음을 나타냅니다.
FIRAuthErrorCodeWrongPassword 사용자 인증 정보가 EmailPasswordAuthCredential 유형인 경우 사용자가 잘못된 비밀번호로 재인증을 시도했음을 나타냅니다.
FIRAuthErrorCodeUserMismatch 현재 사용자가 아닌 다른 사용자로 재인증을 시도했음을 나타냅니다.
FIRAuthErrorCodeOperationNotAllowed 사용자 인증 정보가 나타내는 ID 제공업체 계정이 사용 설정되어 있지 않음을 나타냅니다. Firebase 콘솔의 인증 섹션에서 사용 설정하세요.
FIRAuthErrorCodeEmailAlreadyInUse 사용자 인증 정보에 담긴 이메일 주소(예: Facebook 액세스 토큰의 이메일 주소)를 기존 계정이 이미 사용 중이므로 이 로그인 방법으로 재인증할 수 없음을 나타냅니다. 이 사용자의 이메일 주소에 fetchProvidersForEmail을 호출하여, 반환된 로그인 제공업체 중 하나로 로그인하라는 메시지를 띄우세요. Firebase 콘솔의 인증 설정 아래에서 '이메일 주소당 계정 1개' 설정이 사용 설정 상태일 때만 발생하는 오류입니다.
FIRAuthErrorCodeUserDisabled 사용자의 계정이 사용 중지 상태임을 나타냅니다.

updateEmail:completion:

코드 의미
FIRAuthErrorCodeEmailAlreadyInUse 이메일 주소를 이미 다른 계정에서 사용 중임을 나타냅니다.
FIRAuthErrorCodeInvalidEmail 이메일 주소의 형식이 잘못되었음을 나타냅니다.
FIRAuthErrorCodeRequiresRecentLogin 사용자의 이메일을 변경하는 것은 보안에 민감한 작업이므로 사용자가 최근 로그인한 적이 있어야 진행할 수 있습니다. 이 오류는 사용자가 최근에 로그인하지 않았음을 나타냅니다. 해결하려면 FIRUserreauthenticateWithCredential:completion:을 호출하여 사용자를 재인증하세요.

updatePassword:completion:

코드 의미
FIRAuthErrorCodeOperationNotAllowed 관리자가 지정 ID 제공업체의 로그인을 사용 중지했음을 나타냅니다.
FIRAuthErrorCodeRequiresRecentLogin 사용자의 비밀번호를 변경하는 것은 보안에 민감한 작업이므로, 사용자가 최근 로그인한 적이 있어야 진행할 수 있습니다. 이 오류는 사용자가 최근에 로그인하지 않았음을 나타냅니다. 해결하려면 FIRUserreauthenticateWithCredential:completion:을 호출하여 사용자를 재인증하세요.
FIRAuthErrorCodeWeakPassword 너무 안전성이 낮은 비밀번호를 설정하려고 했음을 나타냅니다. NSError.userInfo 딕셔너리 개체 내의 NSLocalizedFailureReasonErrorKey 필드에 사용자에게 표시할 수 있는 자세한 설명이 있습니다.

linkWithCredential:completion:

코드 의미
FIRAuthErrorCodeProviderAlreadyLinked 이미 이 계정에 연결되어 있는 유형의 제공업체를 연결하려고 시도했음을 나타냅니다.
FIRAuthErrorCodeCredentialAlreadyInUse 이미 다른 Firebase 계정에 연결되어 있는 사용자 인증 정보를 연결하려고 시도했음을 나타냅니다.
FIRAuthErrorCodeOperationNotAllowed 사용자 인증 정보가 나타내는 ID 제공업체 계정이 사용 설정되어 있지 않음을 나타냅니다. Firebase 콘솔의 인증 섹션에서 사용 설정하세요.

이 메소드는 FIRUser에서 updateEmail:completion:updatePassword:completion:과 관련된 오류 코드를 반환할 수도 있습니다.

unlinkFromProvider:completion:

코드 의미
FIRAuthErrorCodeNoSuchProvider 계정에 연결되어 있지 않은 제공업체의 연결을 해제하려고 시도했음을 나타냅니다.
FIRAuthErrorCodeRequiresRecentLogin 사용자의 이메일을 변경하는 것은 보안에 민감한 작업이므로 사용자가 최근 로그인한 적이 있어야 진행할 수 있습니다. 이 오류는 사용자가 최근에 로그인하지 않았음을 나타냅니다. 해결하려면 FIRUserreauthenticateWithCredential:completion:을 호출하여 사용자를 재인증하세요.

sendEmailVerificationWithCompletion:

코드 의미
FIRAuthErrorCodeUserNotFound 사용자 계정을 찾을 수 없었음을 나타냅니다.

deleteWithCompletion:

코드 의미
FIRAuthErrorCodeRequiresRecentLogin 사용자의 이메일을 변경하는 것은 보안에 민감한 작업이므로 사용자가 최근 로그인한 적이 있어야 진행할 수 있습니다. 이 오류는 사용자가 최근에 로그인하지 않았음을 나타냅니다. 해결하려면 FIRUserreauthenticateWithCredential:completion:을 호출하여 사용자를 재인증하세요.

다음에 대한 의견 보내기...

도움이 필요하시나요? 지원 페이지를 방문하세요.