Обработка кодов ошибок Play Integrity API

Если ваше приложение делает запрос Play Integrity API и вызов не удается, ваше приложение получает код ошибки. Эти ошибки могут возникать по разным причинам, например, из-за проблем со средой, таких как плохое сетевое соединение, проблем с интеграцией API или вредоносной активности и активных атак. Тип возвращаемого кода ошибки зависит от типа запроса:

Стратегии повторных попыток

Используйте экспоненциальную задержку для операций Play Integrity, которые происходят в фоновом режиме и не влияют на работу пользователя во время сеанса.

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

После первой неудачи начните с первоначальной задержки в 5 секунд, прежде чем повторить попытку.

Реализуйте стратегию повторных попыток с максимальным количеством попыток в качестве условия выхода, используя экспоненциально увеличивающуюся задержку каждый раз (10 с, 20 с).

При выполнении этих повторных попыток проверяйте наличие сетевого подключения и не перегружайте устройство.

Если вы продолжаете видеть ошибки после трех повторных попыток, трактуйте результат так, как будто клиент не прошел все проверки целостности. Ошибка может быть вызвана несколькими причинами, включая (но не ограничиваясь): перегруженное устройство, проблемы с сетевым подключением или попытка злоумышленника.

Значения кодов ошибок для библиотеки Java

IntegrityErrorCode StandardIntegrityErrorCode
-1 API_NOT_AVAILABLE API_NOT_AVAILABLE
-2 PLAY_STORE_NOT_FOUND PLAY_STORE_NOT_FOUND
-3 NETWORK_ERROR NETWORK_ERROR
-4 PLAY_STORE_ACCOUNT_NOT_FOUND
-5 APP_NOT_INSTALLED APP_NOT_INSTALLED
-6 PLAY_SERVICES_NOT_FOUND PLAY_SERVICES_NOT_FOUND
-7 APP_UID_MISMATCH APP_UID_MISMATCH
-8 TOO_MANY_REQUESTS TOO_MANY_REQUESTS
-9 CANNOT_BIND_TO_SERVICE CANNOT_BIND_TO_SERVICE
-10 NONCE_TOO_SHORT
-11 NONCE_TOO_LONG
-12 GOOGLE_SERVER_UNAVAILABLE GOOGLE_SERVER_UNAVAILABLE
-13 NONCE_IS_NOT_BASE64
-14 PLAY_STORE_VERSION_OUTDATED PLAY_STORE_VERSION_OUTDATED
-15 PLAY_SERVICES_VERSION_OUTDATED PLAY_SERVICES_VERSION_OUTDATED
-16 CLOUD_PROJECT_NUMBER_IS_INVALID CLOUD_PROJECT_NUMBER_IS_INVALID
-17 CLIENT_TRANSIENT_ERROR REQUEST_HASH_TOO_LONG
-18 CLIENT_TRANSIENT_ERROR
-19 INTEGRITY_TOKEN_PROVIDER_INVALID
-100 INTERNAL_ERROR INTERNAL_ERROR

Дополнительные значения кодов ошибок для собственной библиотеки

IntegrityErrorCode StandardIntegrityErrorCode
-100 INTEGRITY_INTERNAL_ERROR STANDARD_INTEGRITY_INTERNAL_ERROR
-101 INTEGRITY_INITIALIZATION_NEEDED STANDARD_INTEGRITY_INITIALIZATION_NEEDED
-102 INTEGRITY_INITIALIZATION_FAILED STANDARD_INTEGRITY_INITIALIZATION_FAILED
-103 INTEGRITY_INVALID_ARGUMENT STANDARD_INTEGRITY_INVALID_ARGUMENT

Повторяемые коды ошибок

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

NETWORK_ERROR (код ошибки -3)

Эта ошибка указывает на то, что возникла проблема с сетевым соединением между устройством и системами Play.

Возможное разрешение

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

Смотрите также

NETWORK_ERROR для классических запросов.

TOO_MANY_REQUESTS (код ошибки -8)

Вызывающее приложение отправляет слишком много запросов к API и было заблокировано.

Возможное разрешение

  1. Запрос на увеличение вашего ежедневного максимального количества запросов
  2. Повторите попытку с экспоненциальной задержкой.

Смотрите также

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 для классических запросов.