Если обратный вызов завершения методов Authentication получает аргумент NSError , отличный от нуля, произошла ошибка. Чтобы передать соответствующую логику обработки ошибок в рабочем коде, проверьте код ошибки на наличие распространенных ошибок и ошибок, специфичных для метода, перечисленных ниже.
 Некоторые ошибки можно устранить с помощью определенных действий пользователя, например, FIRAuthErrorCodeUserTokenExpired можно устранить путем повторного входа пользователя в систему, а FIRAuthErrorCodeWrongPassword — путем запроса пользователя ввести правильный пароль.
 За исключением случаев FIRAuthErrorCodeNetworkError или FIRAuthErrorCodeTooManyRequests , повторная попытка неудачной операции с теми же аргументами никогда не будет успешной. Не делайте предположений о том, вступила ли операция в силу на стороне сервера.
 При исследовании или регистрации ошибок просмотрите словарь userInfo . FIRAuthErrorNameKey содержит кросс-платформенную строку имени ошибки, которую можно использовать для идентификации ошибки. NSLocalizedDescriptionKey содержит описание ошибки. Это описание предназначено для разработчика, а не пользователя. NSUnderlyingErrorKey содержит основную ошибку, вызвавшую рассматриваемую ошибку, если базовая ошибка присутствует.
 Помимо основных полей, перечисленных выше, в словаре userInfo могут быть и другие поля, которые могут оказаться полезными при диагностике ошибок.
 Коды ошибок, общие для всех методов API
|  Код |  Значение | 
|---|
 FIRAuthErrorCodeNetworkError |  Указывает на сетевую ошибку, произошедшую во время операции. | 
 FIRAuthErrorCodeUserNotFound |  Указывает, что учетная запись пользователя не найдена. Это может произойти, если учетная запись пользователя была удалена. | 
 FIRAuthErrorCodeUserTokenExpired |  Указывает, что срок действия токена текущего пользователя истек. Например, пользователь мог изменить пароль учетной записи на другом устройстве. Вы должны предложить пользователю снова войти в систему на этом устройстве. | 
 FIRAuthErrorCodeTooManyRequests |  Указывает, что запрос был заблокирован после того, как от вызывающего устройства к серверам Firebase Authentication было сделано аномальное количество запросов. Повторите попытку через некоторое время. | 
 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 в разделе «Настройки Authentication включен параметр «Одна учетная запись на адрес электронной почты». | 
 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 в разделе «Настройки Authentication включен параметр «Одна учетная запись на адрес электронной почты». | 
 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 . |