Check out what’s new from Firebase@ Google I/O 2021, and join our alpha program for early access to the new Remote Config personalization feature. Learn more

Обработка ошибок аутентификации Firebase iOS

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

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

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

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

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

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

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

Коды ошибок для конкретных методов

FIRAuth

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

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

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

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

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

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

signInAnonymouslyWithCompletion:

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

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

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

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

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

выход:

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

FIRUser

Распространенные ошибки для операций FIRUser

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

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

Код Имея в виду
FIRAuthErrorCodeInvalidCredential Указывает, что предоставленные учетные данные недействительны. Это могло произойти, если срок его действия истек или он поврежден.
FIRAuthErrorCodeInvalidEmail Указывает, что адрес электронной почты имеет неправильный EmailPasswordAuthCredential , если учетные данные имеют тип 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 словаря NSError.userInfo будет содержать более подробное объяснение, которое может быть показано пользователю.

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

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

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

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

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

sendEmailVerificationWithCompletion:

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

deleteWithCompletion:

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