Instance ID は、認証用の一意の ID を提供するだけでなく、他のサービスで使用するセキュリティ トークンを生成することもできます。その他の機能は次のとおりです。
セキュリティ トークンを生成する
インスタンス ID は、サードパーティがアプリのサーバーサイドのマネージド リソースにアクセスすることを承認するセキュリティ トークンを生成するためのシンプルな API を提供します。
アプリの信頼性を確認する
インスタンス ID トークンをサーバーに渡し、インスタンス ID サービスを使用してアプリのパッケージ名を検証し、有効な署名があるかどうかを確認します。Instance ID Cloud Service でトークンを検証すると、既知のアプリを特定できます。コストと冗長なラウンド トリップ通信を削減するには、これらのトークンを保存するようにサーバーを構成して、チェックを 1 回だけ行うようにします。セキュリティ上の懸念がある場合は、アプリでトークンまたはインスタンス ID 自体を削除して、新しいトークンまたはインスタンス ID を生成できます。また、Instance ID サーバーは、バグやセキュリティの問題を検出すると、トークンまたは Instance ID の更新を開始します。
アプリのデバイスが有効であることを確認する
Instance ID サーバーは、アプリがインストールされているデバイスが最後に使用された日時を通知できます。この情報を使用して、アプリのデータを保持するか、プッシュ メッセージを送信してユーザーを再エンゲージメントするかを決定します。
アプリを特定して追跡する
インスタンス ID は世界中のすべてのアプリ インスタンスで一意であるため、データベースでアプリ インスタンスを一意に識別して追跡するために使用できます。サーバーサイド コードは、Instance ID クラウド サービスを介して、Instance ID が本物であり、サーバーに登録された元のアプリと同じ ID であることを確認できます。プライバシー保護のため、アプリはインスタンス ID を削除して、データベース内の履歴との関連付けを解除できます。アプリが次回 Instance ID を呼び出すと、以前の ID とはまったく関係のない新しい Instance ID が取得されます。
インスタンス ID のライフサイクル
アプリがオンラインになると、Instance ID サービスは InstanceID を発行します。InstanceID は、秘密鍵がローカル デバイスに保存され、公開鍵が Instance ID サービスに登録されている公開/秘密鍵ペアによってバックアップされます。
アプリは、getToken() メソッドを使用して、必要に応じてインスタンス ID サービスからトークンをリクエストできます。また、InstanceID と同様に、アプリは独自のサーバーにトークンを保存することもできます。アプリに発行されたすべてのトークンは、アプリの InstanceID に属します。
トークンは一意で安全ですが、セキュリティ上の問題が発生した場合や、デバイスの復元中にユーザーがアプリをアンインストールして再インストールした場合、アプリまたはインスタンス ID サービスでトークンの更新が必要になることがあります。アプリは、Instance ID サービスからのトークン更新リクエストに応答するリスナーを実装する必要があります。
[null,null,["最終更新日 2025-09-05 UTC。"],[[["\u003cp\u003e\u003cstrong\u003eWarning:\u003c/strong\u003e The Instance ID API is deprecated; for unique app installation identifiers, use the Firebase installations API instead.\u003c/p\u003e\n"],["\u003cp\u003eInstance ID offers key features like generating security tokens, verifying app authenticity, confirming app device activity, and identifying/tracking apps.\u003c/p\u003e\n"],["\u003cp\u003eInstance ID has a lifecycle involving issuing an ID, requesting fresh IDs and tokens, storing them on the server (optional), and handling token refreshes.\u003c/p\u003e\n"],["\u003cp\u003eClient implementation requires including the appropriate library and potentially a Project ID for token generation.\u003c/p\u003e\n"],["\u003cp\u003eFor detailed instructions, refer to the Android and iOS implementation guides.\u003c/p\u003e\n"]]],[],null,["# What is Instance ID?\n\n| **Warning:** The Instance ID API is deprecated. If you need to access unique app installation identifiers, use the [Firebase installations](//firebase.google.com/docs/projects/manage-installations) API. See also [Firebase installations and Instance ID](//firebase.google.com/docs/projects/manage-installations#fid-iid). The [server-side topic management API](https://developers.google.com/instance-id/reference/server#create_relationship_maps_for_app_instances) is still available.\n\nKey features\n------------\n\nIn addition to providing unique IDs for authentication, Instance ID\ncan generate security tokens for use with other services. Other features\ninclude:\n\n### Generate Security Tokens\n\n: Instance ID provides a simple API to generate security tokens that\n authorize third parties to access your app's server side managed resources.\n\n### Verify app authenticity\n\n: Pass Instance ID tokens to your server and use the Instance ID\n service to verify the app package name and check if it has a valid signature.\n Verifying tokens with the Instance ID Cloud Service helps identify known\n apps. To reduce cost and redundant round trip communications, configure your\n server to store these tokens so the check is needed only once.\n In the event of a security concern, your app can delete tokens, or\n Instance ID itself, and generate new ones. In addition, the\n Instance ID server initiates token or Instance ID refresh if it\n detects bugs or security issues.\n\n### Confirm app device is active\n\n: The Instance ID server can tell you when the device on which your app\n is installed was last used. Use this to decide whether to keep data from your\n app or send a push message to reengage with your users.\n\n### Identify and track apps\n\n: Instance ID is unique across all app instances across the world, so\n your database can use it to uniquely identify and track app instances. Your\n server-side code can verify, via the Instance ID cloud service, that an\n Instance ID is genuine and is the same ID as the original app that\n registered with your server. For privacy, your app can delete an Instance ID so\n it is no longer associated with any history in the database. The next time your\n app calls Instance ID it will get an entirely new Instance ID with no\n relationship to its previous one.\n\nInstance ID lifecycle\n---------------------\n\n1. The Instance ID service issues an `InstanceID` when your app comes online. The `InstanceID` is backed by a public/private key pair with the private key stored on the local device and the public key registered with the Instance ID service.\n2. Your app can request a fresh `InstanceID` whenever needed using the `getID()` method. Your app can store it on your server if you have one that supports your app.\n3. Your app can request tokens from the Instance ID service as needed using the `getToken()` method, and like `InstanceID`, your app can also store tokens on your own server. All tokens issued to your app belong to the app's `InstanceID`.\n4. Tokens are unique and secure, but your app or the Instance ID service may need to refresh tokens in the event of a security issue or when a user uninstalls and reinstalls your app during device restoration. Your app must implement a listener to respond to token refresh requests from the Instance ID service.\n\nClient implementation\n---------------------\n\nInstance ID runs on both Android and iOS. Each requires you to include\nthe appropriate library in your client app. Android requires\n[Google Play Services](https://developer.android.com/google/play-services/index.html). You will need a Project ID generated\nby the [](/console/help/new)[Google Developers Console](https://console.developers.google.com/project) if you intend\nto generate tokens.\n\nFor detailed instructions, see the [Android](/instance-id/guides/android-implementation)\nand [iOS](/instance-id/guides/ios-implementation) implementation guides."]]