Если ваше приложение отправляет запрос к API Play Integrity и вызов завершается ошибкой, оно получает код ошибки. Эти ошибки могут возникать по разным причинам, например, из-за проблем со средой, таких как плохое сетевое соединение, проблем с интеграцией API, а также вредоносной активности и активных атак. Тип возвращаемого кода ошибки зависит от типа запроса:
- Стандартные запросы: API возвращает StandardIntegrityErrorCode .
- Классические запросы: API возвращает IntegrityErrorCode .
Стратегии повторных попыток
Используйте экспоненциальную задержку для операций Play Integrity, которые происходят в фоновом режиме и не влияют на пользовательский интерфейс во время сеанса.
Например, это целесообразно реализовать при подтверждении новых покупок, поскольку эта операция может происходить в фоновом режиме, и подтверждение не обязательно должно происходить в режиме реального времени, если произошла ошибка.
После первой неудачи начните с первоначальной задержки в 5 секунд, прежде чем повторить попытку.
Реализуйте стратегию повторных попыток с максимальным количеством попыток в качестве условия выхода, используя экспоненциально увеличивающуюся задержку каждый раз (10 с, 20 с).
Во время повторных попыток проверяйте наличие сетевого подключения и не перегружайте устройство.
Если после трёх повторных попыток ошибки продолжают появляться, считайте, что клиент не прошёл все проверки целостности. Ошибка может быть вызвана несколькими причинами, включая (но не ограничиваясь): перегрузку устройства, проблемы с сетевым подключением или попытку злоумышленника.
Значения кодов ошибок для библиотеки Java
Дополнительные значения кодов ошибок для собственной библиотеки
Повторяемые коды ошибок
Причиной этих ошибок иногда являются временные условия, поэтому вам следует повторить вызов.
NETWORK_ERROR
(код ошибки -3)
Эта ошибка указывает на то, что возникла проблема с сетевым соединением между устройством и системами Play.
Возможное разрешение
Чтобы восстановить работу, попросите пользователя проверить наличие сетевого подключения и используйте простые повторные попытки или экспоненциальную задержку в зависимости от того, какое действие вызвало ошибку.
Смотрите также
NETWORK_ERROR
для классических запросов.
TOO_MANY_REQUESTS
(код ошибки -8)
Вызывающее приложение отправляет слишком много запросов к API и было заблокировано, или ваше приложение превысило дневную квоту запросов.
Возможное разрешение
- Повторите попытку с экспоненциальной задержкой.
- Запрос на увеличение вашего ежедневного максимального количества запросов
Смотрите также
TOO_MANY_REQUESTS
для классических запросов.
GOOGLE_SERVER_UNAVAILABLE
(код ошибки -12)
Неизвестная внутренняя ошибка сервера Google.
Возможное разрешение
Повторите попытку с экспоненциальной задержкой. Если ошибка повторяется, рассмотрите возможность отправки сообщения об ошибке .
Смотрите также
GOOGLE_SERVER_UNAVAILABLE
для классических запросов.
CLIENT_TRANSIENT_ERROR
(код ошибки -18)
На клиентском устройстве произошла временная ошибка.
Для стандартных запросов API эта поддержка поддерживается, начиная с версии 1.3.0 библиотеки Play Integrity API для Kotlin и Java , плагина Google Play Integrity для Unity 1.3.0 или выше и Play Core Native SDK 1.13.0 или выше.
Возможное разрешение
Повторите попытку с экспоненциальной задержкой.
Смотрите также
CLIENT_TRANSIENT_ERROR
для классических запросов.
Примечание: при использовании запроса Classic API возвращается значение -17.
INTERNAL_ERROR
(код ошибки -100)
Неизвестная внутренняя ошибка.
Возможное разрешение
Повторите попытку с экспоненциальной задержкой. Если ошибка повторяется, рассмотрите возможность отправки сообщения об ошибке.
Смотрите также
INTERNAL_ERROR
для классических запросов.
STANDARD_INTEGRITY_INTERNAL_ERROR
(код ошибки -100)
Неизвестная внутренняя ошибка.
Возможное разрешение
Повторите попытку с экспоненциальной задержкой. Если ошибка повторяется, рассмотрите возможность отправки сообщения об ошибке.
Смотрите также
См. INTEGRITY_INTERNAL_ERROR
для классических запросов.
STANDARD_INTEGRITY_INITIALIZATION_FAILED
(код ошибки -102)
Произошла ошибка инициализации стандартного API целостности.
Возможное разрешение
Повторите попытку с экспоненциальной задержкой. Если ошибка повторяется, рассмотрите возможность отправки сообщения об ошибке.
Смотрите также
См. INTEGRITY_INITIALIZATION_FAILED
для классических запросов.
Коды ошибок, не подлежащие повторному использованию
Автоматические повторные попытки вряд ли помогут в таких случаях. Однако ручная повторная попытка может помочь, если пользователь устранит причину, вызвавшую проблему. Например, если пользователь обновит версию Play Store до поддерживаемой, ручная повторная попытка первоначальной операции может сработать.
API_NOT_AVAILABLE
(код ошибки -1)
Возможно, на устройстве установлена старая версия Play Store, и API Integrity недоступен. Также возможно, что API Integrity не включён в Google Play Console.
Возможное разрешение
- Убедитесь, что Integrity API включен в Google Play Console.
- Попросите пользователя обновить Play Store.
Смотрите также
См API_NOT_AVAILABLE
для классического запроса.
PLAY_STORE_NOT_FOUND
(код ошибки -2)
Официального приложения Play Store на устройстве не обнаружено.
Возможное разрешение
Попросите пользователя установить или включить Google Play Store.
Смотрите также
Классический запрос см. в PLAY_STORE_NOT_FOUND
.
PLAY_STORE_ACCOUNT_NOT_FOUND
(код ошибки -4)
Примечание: это сообщается только для классического запроса через IntegrityErrorCode
.
На устройстве не найден аккаунт Play Store. Обратите внимание, что API Play Integrity теперь поддерживает запросы без аутентификации. Этот код ошибки используется только для старых версий Play Store, которые не поддерживаются.
Возможное разрешение
Попросите пользователя обновиться и войти в Google Play Store.
APP_NOT_INSTALLED
(код ошибки -5)
Приложение для звонков не установлено. Что-то не так (возможно, атака).
Возможное разрешение
Не требует принятия мер. Относитесь к результату так, как будто клиент не прошёл все проверки благонадежности.
Смотрите также
Классический запрос см. в APP_NOT_INSTALLED
.
PLAY_SERVICES_NOT_FOUND
(код ошибки -6)
Сервисы Play недоступны или требуют обновления.
Возможное разрешение
Попросите пользователя установить, обновить или включить Play Services.
Смотрите также
Классический запрос см. в APP_NOT_INSTALLED
.
APP_UID_MISMATCH
(код ошибки -7)
UID вызывающего приложения (идентификатор пользователя) не совпадает с идентификатором из диспетчера пакетов.
Возможное разрешение
Не требует принятия мер. Относитесь к результату так, как будто клиент не прошёл все проверки благонадежности.
Смотрите также
Классический запрос см. в APP_UID_MISMATCH
.
CANNOT_BIND_TO_SERVICE
(код ошибки -9)
Не удалось привязать приложение к сервису в Play Маркете. Это может быть связано с тем, что на устройстве установлена старая версия Play Маркета.
Возможное разрешение
Попросите пользователя обновить Google Play Store.
Смотрите также
См. CANNOT_BIND_TO_SERVICE
для классического запроса.
NONCE_TOO_SHORT
(код ошибки -10)
Примечание: это сообщается только для классического запроса через IntegrityErrorCode
.
Длина одноразового значения слишком короткая. Длина одноразового значения должна быть не менее 16 байт до кодирования в формате base64.
Возможное разрешение
Повторите попытку с более длинным одноразовым кодом.
NONCE_TOO_LONG
(код ошибки -11)
Примечание: это сообщается только для классического запроса через IntegrityErrorCode
.
Длина одноразового значения слишком велика. Перед кодированием в формате base64 одноразовое значение должно быть меньше 500 байт.
Возможное разрешение
Повторите попытку с более коротким одноразовым кодом.
NONCE_IS_NOT_BASE64
(код ошибки -13)
Примечание: это сообщается только для классического запроса через IntegrityErrorCode
.
Nonce не кодируется как безопасная веб-строка base64 без переносов.
Возможное разрешение
Повторите попытку с одноразовым кодом в правильном формате.
PLAY_STORE_VERSION_OUTDATED
(код ошибки -14)
Необходимо обновить приложение Google Play Store.
Возможное разрешение
Попросите пользователя обновить Google Play Store.
Смотрите также
См. PLAY_STORE_VERSION_OUTDATED
для классического запроса.
PLAY_SERVICES_VERSION_OUTDATED
(код ошибки -15)
Необходимо обновить сервисы Google Play.
Возможное разрешение
Попросите пользователя обновить сервисы Google Play.
Смотрите также
Классический запрос см. в PLAY_SERVICES_VERSION_OUTDATED
.
CLOUD_PROJECT_NUMBER_IS_INVALID
(код ошибки -16)
Указанный номер облачного проекта недействителен.
Возможное разрешение
Используйте номер облачного проекта для облачного проекта, для которого вы включили Play Integrity API.
Смотрите также
См. CLOUD_PROJECT_NUMBER_IS_INVALID
для классического запроса.
REQUEST_HASH_TOO_LONG
(код ошибки -17)
Примечание: об этом сообщается только при использовании стандартного запроса через StandardIntegrityErrorCode
.
Предоставленный requestHash
слишком длинный. Длина requestHash
должна быть меньше 500 символов.
Возможное разрешение
Повторите попытку с более коротким requestHash
.
INTEGRITY_TOKEN_PROVIDER_INVALID
(код ошибки -19)
Примечание: это сообщается только для стандартного запроса через StandardIntegrityErrorCode
.
StandardIntegrityTokenProvider
больше недействителен. Это могло произойти из-за истёкшего срока действия поставщика токена или из-за того, что пользователь очистил данные приложения Play Store, что привело к удалению поставщика токена.
Этот код ошибки доступен только для стандартных запросов API, где он поддерживается начиная с версии библиотеки 1.3.0 для языков программирования Kotlin и Java, плагина Google Play Integrity для Unity 1.3.0 или выше и Play Core Native SDK 1.13.0 или выше.
Возможное разрешение
Запросите нового поставщика токена целостности.
STANDARD_INTEGRITY_INITIALIZATION_NEEDED
(код ошибки -101)
StandardIntegrityManager
не инициализирован.
Возможное разрешение
Сначала вызовите StandardIntegrityManager_init()
.
Смотрите также
См. INTEGRITY_INITIALIZATION_NEEDED
для классических запросов.
STANDARD_INTEGRITY_INVALID_ARGUMENT
(код ошибки -103)
Неверный аргумент передан в стандартный API целостности.
Возможное разрешение
Повторите попытку, указав правильный аргумент.
Смотрите также
См. INTEGRITY_INVALID_ARGUMENT
для классических запросов.