エラーコード

このページでは、一般的なエラーコードとその意味、それに対するアプリやゲームでの対応について説明します。

エラーコード 説明 対応手順
API_NOT_AVAILABLE Integrity API を使用できません。Integrity API が有効になっていないか、Play ストアのバージョンが古い可能性があります。 1)Google Play Console で、Play Integrity API が有効になっていることを確認します。2)Google Play ストアを更新するようにユーザーに依頼します。
NETWORK_ERROR 利用可能なネットワークが見つかりませんでした。 ネットワーク接続を確認するようにユーザーに依頼します。
PLAY_STORE_NOT_FOUND デバイス上に公式の Play ストア アプリが見つかりませんでした。 Google Play ストアをインストールまたは有効にするようにユーザーに依頼します。
PLAY_STORE_VERSION_OUTDATED Play ストア アプリを更新する必要があります。 Google Play ストアを更新するようにユーザーに依頼します。
PLAY_STORE_ACCOUNT_NOT_FOUND デバイス上に Play ストア アカウントが見つかりませんでした。Play Integrity API は未認証のリクエストをサポートするようになったことにご注意ください。このエラーコードは、サポート対象外の古いバージョンの Play ストアにのみ使用されます。 Google Play ストアにログインするようにユーザーに依頼します。
CANNOT_BIND_TO_SERVICE Play ストアでサービスにバインドできませんでした。デバイスに古いバージョンの Play ストアがインストールされている可能性があります。 Google Play ストアを更新するようにユーザーに依頼します。
APP_NOT_INSTALLED 呼び出し元アプリがインストールされていません。 なんらかの問題が発生しており、攻撃の可能性もあります。対応手順はありません。
PLAY_SERVICES_NOT_FOUND Play 開発者サービスを利用できないか、更新する必要があります。 Play 開発者サービスをインストールまたは更新するようにユーザーに依頼します。
PLAY_SERVICES_VERSION_OUTDATED Play 開発者サービスを更新する必要があります。 Google Play 開発者サービスを更新するようにユーザーに依頼します。
TOO_MANY_REQUESTS 呼び出し元アプリからこの API へのリクエスト数が多すぎるため、スロットリングが行われています。
  1. リクエストの 1 日あたりの上限の引き上げをリクエストする
  2. 指数バックオフで再試行します。
REQUEST_HASH_TOO_LONG 指定された requestHash が長すぎます。requestHash の長さは 500 文字未満にする必要があります。 requestHash を短くして再試行します。
GOOGLE_SERVER_UNAVAILABLE Google サーバーの不明な内部エラーです。 指数バックオフで再試行します。
CLIENT_TRANSIENT_ERROR クライアント デバイスで一時的なエラーが発生しました。Kotlin と Java プログラミング言語のライブラリ バージョン 1.1.0 以降、Unity 用 Google Play Integrity プラグイン 1.1.0 以降、Play Core Native SDK 1.12.1 以降でサポートされています。 指数バックオフで再試行します。
INTERNAL_ERROR 不明な内部エラーです。 指数バックオフで再試行します。
NONCE_TOO_SHORT ノンスが短すぎます。ノンスは、16 バイト以上(Base64 エンコード前)でなければなりません。 ノンスを長くして再試行します。
NONCE_TOO_LONG ノンスが長すぎます。ノンスは、500 バイト未満(Base64 エンコード前)でなければなりません。 ノンスを短くして再試行します。
NONCE_IS_NOT_BASE64 ノンスが「Base64、ウェブセーフ、ラップなし」形式ではありません。 正しいノンス形式で再試行します。
CLOUD_PROJECT_NUMBER_IS_INVALID 指定された Cloud プロジェクト番号が無効です。 Play Integrity API を有効にした Cloud プロジェクトの Cloud プロジェクト番号を使用します。
APP_UID_MISMATCH 呼び出し元アプリの UID(ユーザー ID)がパッケージ マネージャーの UID と一致しません。 なんらかの問題が発生しており、攻撃の可能性もあります。対応手順はありません。

ネイティブ固有のエラーコード

ネイティブのエラーコードの前には、名称の競合を避けるため、INTEGRITY_ 接頭辞が付加されています。ネイティブ API には、上記のエラーコードとは別に、次のエラーコードもあります。

エラーコード 説明 対応手順
INTEGRITY_INITIALIZATION_NEEDED IntegrityManager が初期化されていません。 最初に IntegrityManager_init() を呼び出します。
INTEGRITY_INITIALIZATION_FAILED Integrity API の初期化中にエラーが発生しました。 指数バックオフで再試行します。バグの報告を検討してください。
INTEGRITY_INVALID_ARGUMENT Integrity API に無効な引数が渡されました。 正しい引数で再試行します。

エラー発生時にロジックを再試行する

特定のエラーコードが発生した場合、アプリは API 呼び出しを再試行する必要があります。すべてのエラーコードを確認し、アプリケーションが必要に応じて指数バックオフで再試行するようにします。推奨される再試行戦略は次のとおりです。

  1. 最初に失敗した後、最初に 5 秒遅延してから再試行します。
  2. 全部で 3 回再試行します。再試行するたびに遅延を指数関数的に増加します(10 秒、20 秒)。

再試行する際には、ネットワーク接続を確認し、デバイスが過負荷にならないようにしてください。

3 回試行した後でもエラーが表示される場合は、クライアントが一部の完全性チェックに失敗した場合と同様に処理します。エラーの理由としては、デバイスの過負荷、ネットワーク接続の問題、攻撃の試みなどが考えられますが、これらに限定されません。