XStoreGetUserCollectionsIdAsync
顧客コレクション ID を取得します。 次に、この ID を使用して、B2B 呼び出しによって独自のサービスからのユーザーの資格を検証できます。 この API は、「サービスから製品を管理する」で説明されているフローで使用されます。
構文
HRESULT XStoreGetUserCollectionsIdAsync(
const XStoreContextHandle storeContextHandle,
const char* serviceTicket,
const char* publisherUserId,
XAsyncBlock* async
)
パラメーター
storeContextHandle _In_
型: XStoreContextHandle
XStoreCreateContext によって返されるユーザーの Microsoft Store コンテキスト ハンドル。
serviceTicket _In_z_
型: char*
ユーザーとサービスを承認するためにバックエンド サービスによって使用できる Azure チケット。 これにより、サービスからチケットを取り戻し、独自のサーバーに中継できます。 その後、サーバーでこれを格納し、B2B の呼び出しに対してそれを使用して、所有権を確認したり、アクセスを許可したりできます。
publisherUserId _In_z_
型: char*
開発者によって生成された文字列は、現在のユーザーを、ゲーム、開発者、または発行者に属するサービスのメンバーまたはゲストとして識別することを意味します。 この文字列の内容は開発者によって決定され、空白のままにすることができます。
async _Inout_
型: XAsyncBlock*
行われている非同期処理が定義されている XAsyncBlock。 XAsyncBlock を使用して、呼び出しのステータスをポーリングし、呼び出しの結果を取得できます。 詳細については、「XAsyncBlock」を参照してください。
戻り値
型: HRESULT
HRESULT 成功またはエラー コード。
解説
PC の場合、この API は現在 Microsoft Store にサインインしているユーザーの情報を返します。Xbox サービス対応の場合、必ずしもゲームをプレイしているユーザーではありません。 Xbox 本体または Xbox サービス対応の PC 上のタイトルの場合、XSTS 代理承認を使用して、コレクションとライセンス プレビュー エンドポイントに B2B 呼び出しを行い、アクティブなプレイ中のユーザーの資格を確認することをお勧めします。
この関数の実行結果とユーザーのコレクション ID を取得するには、この関数を呼び出した後で、XStoreGetUserCollectionsIdResult を呼び出します。 ユーザーのコレクション ID のサイズを取得するには、xstoregetusercollectionsidresultsize を呼び出します。 結果のサイズを把握することで、より効率的に取得することができます。
次のコード スニペットでは、顧客コレクション ID を取得する例を示します。
void CALLBACK GetUserCollectionsIdCallback(XAsyncBlock* asyncBlock)
{
size_t size;
HRESULT hr = XStoreGetUserCollectionsIdResultSize(
asyncBlock,
&size);
if (FAILED(hr))
{
printf("Failed retrieve the user collection ID size: 0x%x\r\n", hr);
return;
}
char* result = new char[size];
hr = XStoreGetUserCollectionsIdResult(
asyncBlock,
size,
result);
if (FAILED(hr))
{
printf("Failed retrieve the user collection ID result: 0x%x\r\n", hr);
delete[] result;
return;
}
printf("result: %s\r\n", result);
delete[] result;
}
void GetUserCollectionsId(XStoreContextHandle storeContextHandle, XTaskQueueHandle taskQueueHandle, const char* serviceTicket, const char* publisherUserId)
{
auto asyncBlock = std::make_unique<XAsyncBlock>();
ZeroMemory(asyncBlock.get(), sizeof(*asyncBlock));
asyncBlock->queue = taskQueueHandle;
asyncBlock->callback = GetUserCollectionsIdCallback;
HRESULT hr = XStoreGetUserCollectionsIdAsync(
storeContextHandle,
serviceTicket,
publisherUserId,
asyncBlock.get());
if (FAILED(hr))
{
printf("Failed to get user collections ID: 0x%x\r\n", hr);
return;
}
}
要件
ヘッダー: XStore.h (XGameRuntime.h に含まれます)
ライブラリ: xgameruntime.lib
サポートされているプラットフォーム: Windows、Xbox One ファミリー本体、Xbox Series 本体