Если ваше приложение делает запрос Play Integrity API и вызов не удается, ваше приложение получает код ошибки. Эти ошибки могут возникать по разным причинам, например, из-за проблем со средой, таких как плохое сетевое соединение, проблем с интеграцией 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, установленная на устройстве, может быть старой, а Integrity API недоступен. Другая возможность заключается в том, что Integrity API не включен в 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 Store не удалась. Это может быть связано с тем, что на устройстве установлена старая версия Play Store.
Возможное разрешение
Попросите пользователя обновить Google Play Store.
Смотрите также
См. CANNOT_BIND_TO_SERVICE
для классического запроса.
NONCE_TOO_SHORT
(код ошибки -10)
Примечание: эта ошибка отображается только для классического запроса через IntegrityErrorCode
.
Длина nonce слишком короткая. Nonce должен быть не менее 16 байт перед кодировкой base64.
Возможное разрешение
Повторите попытку с более длинным одноразовым кодом.
NONCE_TOO_LONG
(код ошибки -11)
Примечание: эта ошибка отображается только для классического запроса через IntegrityErrorCode
.
Длина nonce слишком велика. Nonce должен быть меньше 500 байт перед кодировкой base64.
Возможное разрешение
Повторите попытку с более коротким одноразовым номером.
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, что удалило поставщика токенов.
Этот код ошибки доступен только для запросов Standard 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
для классических запросов.