主な機能
インスタンス ID は、認証用の一意の ID を提供できるだけでなく、他のサービスで使用するためのセキュリティ トークンを生成することもできます。その他の機能は次のとおりです。
セキュリティ トークンを生成する
- インスタンス ID には、サードパーティがアプリのサーバーサイド管理リソースにアクセスすることを許可するセキュリティ トークンを生成するためのシンプルな API が用意されています。
アプリの真正性を確認する
- インスタンス ID トークンをサーバーに渡し、インスタンス ID サービスを使用してアプリのパッケージ名を確認し、有効な署名があるかどうかを確認します。インスタンス ID Cloud サービスでトークンを検証すると、既知のアプリを特定できます。費用と冗長なラウンド トリップ通信を削減するには、これらのトークンを保存するようにサーバーを構成し、チェックが 1 回だけ必要になるようにします。セキュリティ上の懸念がある場合は、アプリでトークンまたはインスタンス ID 自体を削除して、新しいトークンを生成できます。また、Instance ID サーバーは、バグやセキュリティの問題を検出すると、トークンまたは Instance ID の更新を開始します。
アプリのデバイスが有効であることを確認する
- Instance ID サーバーは、アプリがインストールされているデバイスが最後に使用された日時を把握できます。これを使用して、アプリのデータを保持するか、プッシュ メッセージを送信してユーザーとのエンゲージメントを再開するかを判断します。
アプリの特定と追跡
- インスタンス ID は世界中のすべてのアプリ インスタンスで一意であるため、データベースでアプリ インスタンスを一意に識別して追跡できます。サーバーサイド コードは、インスタンス ID クラウド サービスを使用して、インスタンス ID が正規のものであり、サーバーに登録された元のアプリと同じ ID であることを検証できます。プライバシー保護のため、アプリはインスタンス ID を削除して、データベース内の履歴に関連付けられなくすることができます。アプリが次回 Instance ID を呼び出すと、以前の ID とは関係のないまったく新しい Instance ID が取得されます。
インスタンス ID のライフサイクル
- アプリがオンラインになると、Instance ID サービスが
InstanceID
を発行します。InstanceID
は、ローカル デバイスに保存された秘密鍵と、Instance ID サービスに登録された公開鍵を持つ公開/秘密鍵ペアによってサポートされています。 - アプリは、必要に応じて
getID()
メソッドを使用して新しいInstanceID
をリクエストできます。アプリをサポートするサーバーが存在する場合は、アプリはそのサーバーに保存できます。 - アプリは、必要に応じて
getToken()
メソッドを使用して Instance ID サービスからトークンをリクエストできます。また、InstanceID
と同様に、アプリは独自のサーバーにトークンを保存することもできます。アプリに発行されるすべてのトークンは、アプリのInstanceID
に属します。 - トークンは一意で安全ですが、セキュリティの問題が発生した場合や、ユーザーがデバイスの復元中にアプリをアンインストールして再インストールした場合は、アプリまたはインスタンス ID サービスでトークンを更新する必要があります。アプリは、Instance ID サービスからのトークン更新リクエストに応答するリスナーを実装する必要があります。
クライアントの実装
インスタンス ID は Android と iOS の両方で動作します。いずれの場合も、クライアント アプリに適切なライブラリを含める必要があります。Android の場合は Google Play 開発者サービスが必要です。トークンを生成する場合は、 Google Developers Console で生成されたプロジェクト ID が必要です。