User Info Interface

表示名や国などユーザーに関する情報の取得と、表示名とアカウント識別子のマッピングを行うインターフェース。

6 分で読めます

Epic Online Services (EOS) ユーザー アカウント のそれぞれに、そのアカウントを参照するためにサービスが内部で使用する一意の識別子があります。User Info インターフェース は、ユーザーのアカウント識別子と、表示名、国、使用言語などのユーザーに関する情報とを橋渡しします。リモート ユーザーと、ログインしているローカル ユーザーの両方に関してこの情報を取得できます。

ユーザーのプライバシーを保護するために、User Info インターフェースではリモート ユーザーの表示名と一意のアカウント識別子のみを提供します。

User Info インターフェースを使用するには、Epic Account Services (EAS) をアクティブにし、ユーザー同意 を取得して Basic Profile にアクセスする必要があります。EAS は デベロッパー ポータル 上で有効にすることができます。詳細は「Epic のドキュメント」を参照してください。EAS およびユーザー同意がなくても、EOS SDK および User Info インターフェースの初期化を行うことができますが、バックエンド サービスへのすべての User Info インターフェース機能呼び出しは失敗します。

ユーザー情報を取得してキャッシュする

User Info インターフェースにアクセスするには、EOS_HUserInfo ハンドルが必要です。このハンドルは、Platform インターフェース から EOS_Platform_GetUserInfoInterface 関数を通じて取得できます。このハンドルは、User Info インターフェースの関数がユーザー情報にアクセスするために必要です。 オンライン サービスのサーバーはユーザー情報を保存します。この情報は、ユーザーが自分のアカウントを更新すると通知なしに変更される場合があります。User Info インターフェースは、最新の情報が必要な場合にサーバーにクエリすることで更新可能なローカル キャッシュを自動的に作成します。

アカウント識別子でユーザー情報を取得する

ユーザー情報を処理する最初のステップは、EOS_UserInfo_QueryUserInfoOptions データ構造体を使用して EOS_UserInfo_QueryUserInfo を呼び出すことです。これは、最新バージョンのユーザー情報をローカル キャッシュにダウンロードします。EOS_UserInfo_QueryUserInfo 呼び出しを実行するには、EOS_UserInfo_QueryUserInfoOptions を作成して次のフィールド値で初期化します。

プロパティ
ApiVersionEOS_USERINFO_QUERYUSERINFO_API_LATEST
LocalUserIdログイン ユーザーの EOS_EpicAccountId
TargetUserId情報を取得する対象のユーザーの EOS_EpicAccountId

User Info インターフェース ハンドル、EOS_UserInfo_QueryUserInfoOptions 構造体、およびコールバック情報を関数に渡します。EOS_HPlatform ハンドルがティックしている場合、操作が終了すると、EOS_UserInfo_QueryUserInfo に指定したコールバックが実行されます。 コールバックが実行されたら、EOS_UserInfo_QueryUserInfoCallbackInfo 構造体の ResultCode フィールドをチェックして、操作が成功したか、失敗したかを判断できます。成功コードは、SDK によってサーバーから最新のデータがキャッシュされ、いつでもデータを調査できることを示します。

表示名でユーザー情報を取得する

EOS SDK のほとんどの関数はユーザーの一意のアカウント識別子に基づいてユーザーを処理しますが、プレイヤーが知ることができるのはフレンドのアカウント名だけです。EOS_UserInfo_QueryUserInfoByDisplayName には、表示名とアカウント識別子をマッピングする方法が用意されています。EOS_UserInfo_QueryUserInfoByDisplayNameOptions データ構造体を使用して EOS_UserInfo_QueryUserInfoByDisplayName を呼び出し、最新バージョンのユーザー情報を取得してキャッシュします。この関数を呼び出すとき、EOS_UserInfo_QueryUserInfoByDisplayNameOptions 構造体を次のように初期化します。

プロパティ
ApiVersionEOS_USERINFO_QUERYUSERINFOBYDISPLAYNAME_API_LATEST
LocalUserIdログイン ユーザーの EOS_EpicAccountId
DisplayName情報を取得する対象のユーザーの表示名。

User Info インターフェース ハンドル、EOS_UserInfo_QueryUserInfoByDisplayNameOptions 構造体、およびコールバック情報を関数に渡します。EOS_HPlatform ハンドルがティックしている場合、操作が終了すると、指定したコールバックが実行されます。コールバックが実行されたら、EOS_UserInfo_QueryUserInfoByDisplayNameCallbackInfo 構造体の ResultCode フィールドをチェックして、操作が成功したか、失敗したかを判断できます。成功すると、SDK によってサーバーから最新のデータがキャッシュされ、いつでもデータを調査できます。

ユーザー情報を調査する

オンライン サービスから特定のユーザーに関する情報を取得したら、EOS_UserInfo_CopyUserInfo 関数を使用してそのデータのコピーをリクエストすることができます。この関数には、次の情報を設定した EOS_UserInfo_CopyUserInfoOptions 構造体が必要です。

プロパティ
ApiVersionEOS_USERINFO_COPYUSERINFO_API_LATEST
LocalUserIdログイン ユーザーの EOS_EpicAccountId
TargetUserId情報が必要なユーザーの EOS_EpicAccountId。これは LocalUserId と同一にできる。

User Info インターフェース ハンドル、EOS_UserInfo_CopyUserInfoOptions 構造体、ポインタのアドレスを EOS_UserInfo データ構造体に渡します。キャッシュにターゲット ユーザーに関する情報が含まれている場合、EOS_UserInfo データ構造体が設定され、関数は EOS_Success を返します。

この関数は、データのコピーを作成することで、ゲーム コードがアクセスするユーザー情報が User Info インターフェースによって削除されるのを防止します。つまり、コードがそのメモリを所有し、そのメモリの解放を行います。これを行わないと、メモリ リークが発生します。EOS_UserInfo オブジェクトを EOS_UserInfo_Release に渡すことで、オブジェクトを解放できます。

非ローカル ユーザーの場合、EOS_UserInfo 構造体に含まれる情報の大半は空です。このようになっているのは、個人を特定できる情報 (PII) が EOS を通じて他のユーザーに提供されないようにするためです。EOS SDK によって設定されることが保証されているのは、DisplayName フィールドと UserId フィールドのみです。

名前とニックネームを表示する

他のユーザーに対してニックネームを設定することができます。ユーザーが別のユーザーにニックネームを割り当てると、それは Nickname に含まれます。ニックネームを作成したユーザーのみが使用できます。ニックネームの割り当てがない場合、Nickname フィールドは null になります。

ローカル ユーザーは割り当てられたニックネームを個人情報だと考える場合もあるため、ユーザーに配慮してニックネームの複製を避けることを推奨します。

外部のユーザー情報

1.6 では、リンクされたユーザーのデータを取得することができます。インターフェースは、このデータの取得を支援するために、いくつかの API 関数を公開します。ユーザーの EOS_UserInfo と同様に、以前に EOS_UserInfo_QueryUserInfo に呼び出しを行っていない限り、ユーザーの EOS_UserInfo_ExternalUserInfo はキャッシュされず、取得することができます。

EOS_UserInfo_GetExternalUserInfoCount は、対象ユーザーの取得に使用できる外部ユーザー情報エントリの数を返します。

EOS_UserInfo_CopyExternalUserInfoByIndex は、対象ユーザーの外部ユーザー情報を任意のインデックスで出力します。

EOS_UserInfo_CopyExternalUserInfoByAccountType は対象ユーザーの外部ユーザー情報を情報を取得したい外部アカウントの特定のタイプで出力します。1.6 では、外部ユーザー情報に対してサポートされたアカウント タイプは EOS_EAT_PSNEOS_EAT_XBLEOS_EAT_NINTENDOEOS_EAT_STEAM です。

EOS_UserInfo_CopyExternalUserInfoByAccountId は対象ユーザーの外部ユーザー情報を外部アカウントのアカウント ID で出力します。

外部ユーザー情報エントリの使用が済んだら、漏洩を防ぐために EOS_UserInfo_ExternalUserInfo_Release を必ず呼び出してください。