Обработка ошибок аутентификации на платформах Apple Firebase

Если обратный вызов завершения методов аутентификации получает аргумент NSError , отличный от нуля, произошла ошибка. Чтобы передать соответствующую логику обработки ошибок в рабочем коде, проверьте код ошибки на наличие распространенных ошибок и ошибок, специфичных для метода, перечисленных ниже.

Некоторые ошибки можно устранить с помощью определенных действий пользователя, например, FIRAuthErrorCodeUserTokenExpired можно устранить путем повторного входа пользователя в систему, а FIRAuthErrorCodeWrongPassword — путем запроса пользователя ввести правильный пароль.

За исключением случаев FIRAuthErrorCodeNetworkError или FIRAuthErrorCodeTooManyRequests , повторная попытка неудачной операции с теми же аргументами никогда не будет успешной. Не делайте предположений о том, вступила ли операция в силу на стороне сервера.

При исследовании или регистрации ошибок просмотрите словарь userInfo . FIRAuthErrorNameKey содержит кросс-платформенную строку имени ошибки, которую можно использовать для идентификации ошибки. NSLocalizedDescriptionKey содержит описание ошибки. Это описание предназначено для разработчика, а не пользователя. NSUnderlyingErrorKey содержит основную ошибку, вызвавшую рассматриваемую ошибку, если базовая ошибка присутствует.

Помимо основных полей, перечисленных выше, в словаре userInfo могут быть и другие поля, которые могут оказаться полезными при диагностике ошибок.

Коды ошибок, общие для всех методов API

Код Значение
FIRAuthErrorCodeNetworkError Указывает на сетевую ошибку, произошедшую во время операции.
FIRAuthErrorCodeUserNotFound Указывает, что учетная запись пользователя не найдена. Это может произойти, если учетная запись пользователя была удалена.
FIRAuthErrorCodeUserTokenExpired Указывает, что срок действия токена текущего пользователя истек. Например, пользователь мог изменить пароль учетной записи на другом устройстве. Вы должны предложить пользователю снова войти в систему на этом устройстве.
FIRAuthErrorCodeTooManyRequests Указывает, что запрос был заблокирован после того, как с вызывающего устройства было отправлено ненормальное количество запросов к серверам аутентификации Firebase. Повторите попытку через некоторое время.
FIRAuthErrorCodeInvalidAPIKey Указывает, что приложение настроено с недопустимым ключом API.
FIRAuthErrorCodeAppNotAuthorized Указывает, что приложению не разрешено использовать аутентификацию Firebase с предоставленным ключом API. перейдите в консоль Google API и на вкладке учетных данных проверьте, что используемый вами ключ API имеет идентификатор пакета вашего приложения в белом списке.
FIRAuthErrorCodeKeychainError Указывает на ошибку при доступе к связке ключей. Поля NSLocalizedFailureReasonErrorKey и NSUnderlyingErrorKey в словаре NSError.userInfo будут содержать дополнительную информацию о возникшей ошибке.
FIRAuthErrorCodeInternalError Указывает на то, что произошла внутренняя ошибка. Пожалуйста , сообщите об ошибке со всем объектом NSError .

Коды ошибок, специфичные для метода

FIRAuth

fetchProvidersForEmail:завершение:

Код Значение
FIRAuthErrorCodeInvalidEmail Указывает на то, что адрес электронной почты имеет неправильный формат.

SignInWithEmail:пароль:завершение:

Код Значение
FIRAuthErrorCodeOperationNotAllowed Указывает, что учетные записи электронной почты и паролей не включены. Включите их в разделе Auth консоли Firebase .
FIRAuthErrorCodeInvalidEmail Указывает на то, что адрес электронной почты имеет неправильный формат.
FIRAuthErrorCodeUserDisabled Указывает, что учетная запись пользователя отключена.
FIRAuthErrorCodeWrongPassword Указывает, что пользователь попытался войти в систему с неправильным паролем.

SignInWithCredential:завершение:

Код Значение
FIRAuthErrorCodeInvalidCredential Указывает, что предоставленные учетные данные недействительны. Это может произойти, если срок его действия истек или он поврежден.
FIRAuthErrorCodeInvalidEmail Указывает, что адрес электронной почты имеет неправильный формат, если учетные данные имеют тип EmailPasswordAuthCredential .
FIRAuthErrorCodeOperationNotAllowed Указывает, что учетные записи с поставщиком удостоверений, представленным учетными данными, не включены. Включите их в разделе Auth консоли Firebase .
FIRAuthErrorCodeEmailAlreadyInUse Указывает, что адрес электронной почты, указанный в учетных данных (например, адрес электронной почты в токене доступа Facebook), уже используется существующей учетной записью, подлинность которой не может быть проверена с помощью этого метода входа. Вызовите fetchProvidersForEmail для адреса электронной почты этого пользователя, а затем предложите ему войти в систему с помощью любого из возвращенных поставщиков входа. Эта ошибка будет возникать только в том случае, если в консоли Firebase в разделе «Настройки аутентификации» включен параметр «Одна учетная запись на адрес электронной почты».
FIRAuthErrorCodeUserDisabled Указывает, что учетная запись пользователя отключена.
FIRAuthErrorCodeWrongPassword Указывает, что пользователь попытался войти в систему с неправильным паролем, если учетные данные имеют тип EmailPasswordAuthCredential .

SignInAnonymouslyWithCompletion:

Код Значение
FIRAuthErrorCodeOperationNotAllowed Указывает, что анонимные учетные записи не включены. Включите их в разделе Auth консоли Firebase .

SignInWithCustomToken:завершение:

Код Значение
FIRAuthErrorCodeInvalidCustomToken Указывает на ошибку проверки пользовательского токена.
FIRAuthErrorCodeCustomTokenMismatch Указывает, что учетная запись службы и ключ API принадлежат разным проектам.

createUserWithEmail:пароль:завершение:

Код Значение
FIRAuthErrorCodeInvalidEmail Указывает на то, что адрес электронной почты имеет неправильный формат.
FIRAuthErrorCodeEmailAlreadyInUse Указывает, что адрес электронной почты, использованный для регистрации, уже существует. Вызовите fetchProvidersForEmail , чтобы проверить, какие механизмы входа использовал этот пользователь, и предложите пользователю войти в систему с помощью одного из них.
FIRAuthErrorCodeOperationNotAllowed Указывает, что учетные записи электронной почты и паролей не включены. Включите их в разделе Authentication консоли Firebase .
FIRAuthErrorCodeWeakPassword Указывает на попытку установки пароля, который считается слишком слабым. Поле NSLocalizedFailureReasonErrorKey в объекте словаря NSError.userInfo будет содержать более подробное объяснение, которое может быть показано пользователю.

выход:

Код Значение
FIRAuthErrorCodeKeychainError Указано, что произошла ошибка при доступе к связке ключей. Поля NSLocalizedFailureReasonErrorKey и NSUnderlyingErrorKey в словаре NSError.userInfo будут содержать дополнительную информацию о возникшей ошибке.

FIRUser

Распространенные ошибки при операциях FIRUUser

Код Значение
FIRAuthErrorCodeInvalidUserToken Указывает, что токен обновления вошедшего пользователя, содержащий информацию о сеансе, недействителен. Вы должны предложить пользователю снова войти в систему на этом устройстве.
FIRAuthErrorCodeUserDisabled Указывает, что учетная запись пользователя отключена и ее больше нельзя использовать, пока она не будет снова включена на панели «Пользователи» в консоли Firebase.

reauthenticateWithCredential:завершение:

Код Значение
FIRAuthErrorCodeInvalidCredential Указывает, что предоставленные учетные данные недействительны. Это может произойти, если срок его действия истек или он поврежден.
FIRAuthErrorCodeInvalidEmail Указывает, что адрес электронной почты имеет неправильный формат, если учетные данные имеют тип EmailPasswordAuthCredential .
FIRAuthErrorCodeWrongPassword Указывает, что пользователь предпринял попытку повторной аутентификации с неверным паролем, если учетные данные имеют тип EmailPasswordAuthCredential .
FIRAuthErrorCodeUserMismatch Указывает, что была предпринята попытка повторной аутентификации пользователя, который не является текущим пользователем.
FIRAuthErrorCodeOperationNotAllowed Указывает, что учетные записи с поставщиком удостоверений, представленным учетными данными, не включены. Включите их в разделе Auth консоли Firebase .
FIRAuthErrorCodeEmailAlreadyInUse Указывает, что адрес электронной почты, указанный в учетных данных (например, адрес электронной почты в токене доступа Facebook), уже используется существующей учетной записью, которую нельзя повторно аутентифицировать с помощью этого метода входа. Вызовите fetchProvidersForEmail для адреса электронной почты этого пользователя, а затем предложите ему войти в систему с помощью любого из возвращенных поставщиков входа. Эта ошибка будет возникать только в том случае, если в консоли Firebase в разделе «Настройки аутентификации» включен параметр «Одна учетная запись на адрес электронной почты».
FIRAuthErrorCodeUserDisabled Указывает, что учетная запись пользователя отключена.

updateEmail:завершение:

Код Значение
FIRAuthErrorCodeEmailAlreadyInUse Указывает, что адрес электронной почты уже используется другой учетной записью.
FIRAuthErrorCodeInvalidEmail Указывает на то, что адрес электронной почты имеет неправильный формат.
FIRAuthErrorCodeRequiresRecentLogin Обновление электронной почты пользователя — это операция, чувствительная к безопасности, требующая от пользователя недавнего входа в систему. Эта ошибка указывает на то, что пользователь не входил в систему достаточно давно. Чтобы решить эту проблему, повторите аутентификацию пользователя, вызвав reauthenticateWithCredential:completion: на FIRUser .

updatePassword:завершение:

Код Значение
FIRAuthErrorCodeOperationNotAllowed Указывает, что администратор отключил вход в систему с указанным поставщиком удостоверений.
FIRAuthErrorCodeRequiresRecentLogin Обновление пароля пользователя — это операция, чувствительная к безопасности, требующая от пользователя недавнего входа в систему. Эта ошибка указывает на то, что пользователь не входил в систему достаточно давно. Чтобы решить эту проблему, повторите аутентификацию пользователя, вызвав reauthenticateWithCredential:completion: на FIRUser .
FIRAuthErrorCodeWeakPassword Указывает на попытку установки пароля, который считается слишком слабым. Поле NSLocalizedFailureReasonErrorKey в объекте словаря NSError.userInfo будет содержать более подробное объяснение, которое может быть показано пользователю.

linkWithCredential:завершение:

Код Значение
FIRAuthErrorCodeProviderAlreadyLinked Указывает на попытку связать провайдера того типа, который уже связан с этой учетной записью.
FIRAuthErrorCodeCredentialAlreadyInUse Указывает на попытку установить связь с учетными данными, которые уже были связаны с другой учетной записью Firebase.
FIRAuthErrorCodeOperationNotAllowed Указывает, что учетные записи с поставщиком удостоверений, представленным учетными данными, не включены. Включите их в разделе Auth консоли Firebase .

Этот метод также может возвращать коды ошибок, связанные с updateEmail:completion: и updatePassword:completion: на FIRUser .

unlinkFromProvider:завершение:

Код Значение
FIRAuthErrorCodeNoSuchProvider Обозначает попытку отсоединить провайдера, не привязанного к учетной записи.
FIRAuthErrorCodeRequiresRecentLogin Обновление электронной почты — это операция, чувствительная к безопасности, требующая от пользователя недавнего входа в систему. Эта ошибка указывает на то, что пользователь не входил в систему достаточно давно. Чтобы решить эту проблему, повторите аутентификацию пользователя, вызвав reauthenticateWithCredential:completion: на FIRUser .

sendEmailVerificationWithCompletion:

Код Значение
FIRAuthErrorCodeUserNotFound Указывает, что учетная запись пользователя не найдена.

удалитьс завершением:

Код Значение
FIRAuthErrorCodeRequiresRecentLogin Удаление учетной записи пользователя — это операция, чувствительная к безопасности, требующая от пользователя недавнего входа в систему. Эта ошибка указывает на то, что пользователь не входил в систему достаточно давно. Чтобы решить эту проблему, повторите аутентификацию пользователя, вызвав reauthenticateWithCredential:completion: на FIRUser .