次の方法で共有


XGameUiShowWebAuthenticationWithOptionsAsync

ユーザーが実行中のタイトルに資格情報を直接提供せずに外部の Web サイトやサービスへのアクセスを委任できるようにする Web UI を (場合によっては全画面で) 表示する、非同期認証要求を開始します。

構文

STDAPI XGameUiShowWebAuthenticationWithOptionsAsync(
    _In_ XAsyncBlock* async,
    _In_ XUserHandle requestingUser,
    _In_z_ const char* requestUri,
    _In_z_ const char* completionUri,
    _In_ XGameUiWebAuthenticationOptions options
    ) noexcept;
)  

パラメーター

async _In_
型: XAsyncBlock*

XAsyncRun に渡された XAsyncBlock へのポインター。

requestingUser _In_
型: XUserHandle

Web 認証を要求しているユーザーに対するハンドル。

requestUri _In_z_
型: char*

ユーザーに表示される Web ビューの初期 URI (サービスに対するユーザー認証のためのフィールドを含んでいる可能性があります)。 要求 URI は、セキュリティで保護された HTTPS アドレスである必要があります。

completionUri _In_z_
型: char*

Web 認証プロセスが正常に完了したことを表す URI を示します。 Web ビューが completionUri と一致する URI にナビゲートすると、Web ビューが閉じられ、呼び出し元のタイトルに制御が戻されます。

オプション &nbps;_In_ 型: XGameUiWebAuthenticationOptions

UI の全画面表示を試行するかどうかを指定するフラグ。 PC では、このフラグは無視されます。 全画面表示は、PC でサポートされているオプションではありません。

戻り値

型: HRESULT

非同期呼び出しの HRESULT の成功またはエラー コードです。

結果を取得するには、AsyncBlock コールバック内または AsyncBlock 完了後に xgameuishowwebauthenticationresultsizexgameuishowwebauthenticationresult を呼び出します。

解説

この非同期タスクが実行されると、システムによって Web ビューがユーザーに表示 (現在のアプリケーションに重ねて表示) されます。ユーザーはこのビューを操作するか、戻るボタンを押して閉じることができます。 これによりユーザーは、外部の Web サイトやサービスへの認証アクセス許可を付与するために OAuth を使用できるようになります。 これは、ゲームがゲーム内のハイライトをソーシャル メディアで共有することを認証するシナリオや、外部プロバイダーのユーザー データを要求するシナリオなどで使用できます。

認証要求の結果は、XGameUiShowWebAuthenticationResult メソッドから返される XGameUiWebAuthenticationResultData オブジェクトに格納されます。

Web ビューが completionUri にナビゲートした結果として閉じられた場合、結果データ構造体の responseStatus フィールドは S_OK になります。

ユーザーが Web ビューをキャンセルするか、手動で閉じた場合、結果データ構造体の responseStatus フィールドは E_CANCELLED になります。

次のコード例は、Facebook を使用して OAuth を実行する方法を示しています。 コードを簡潔にするために、この例にはメモリ割り当てのエラー処理は含まれていません。

// Use Facebook example for OAuth; client_id should correspond to your registered application.
const char completionUri[] = "https://www.facebook.com/connect/login_success.html"; 
const char requestUri[] =
    "https://www.facebook.com/dialog/oauth?"
    "client_id=000000000000000&"
    "redirect_uri=https%3A%2F%2Fwww.facebook.com%2Fconnect%2Flogin_success.html&"
    "response_type=token&"
    "sdk=xboxone";

// Allocate and initialize XAsyncBlock for asynchronous authentication operation.
XAsyncBlock* block = new XAsyncBlock();
ZeroMemory(block, sizeof(XAsyncBlock));
block->callback = [](XAsyncBlock* block)
{
    // Query required size and allocate buffer for authentication result data.
    uint32_t bufferSize = 0;
    FAIL_FAST_IF_FAILED(XGameUiShowWebAuthenticationResultSize(block, &bufferSize));
    uint8_t* buffer = new uint8_t[bufferSize];

    // The currentUser is initialized with user to authenticate for.
    XGameUiWebAuthenticationResultData* resultData = nullptr;
    FAIL_FAST_IF_FAILED(XGameUiShowWebAuthenticationResult(
        block,
        bufferSize,
        buffer,
        &resultData,
        nullptr
        ));

    //
    // Use the result data here. If resultData->responseStatus is S_OK, then web authentication was successful.
    //

    // Free allocated buffer and XAsyncBlock.
    delete[] buffer;
    delete block;
};

//  Begin asynchronous authentication operation.
XUserHandle currentUser = GetCurrentUserForAuthentication();
FAIL_FAST_IF_FAILED(XGameUiShowWebAuthenticationWithOptionsAsync(
    block,
    currentUser,
    requestUri,
    completionUri,
    XGameUiWebAuthenticationOptions::PreferFullscreen
    ));

要件

ヘッダー: XGameUI.h

ライブラリ: xgameruntime.lib

サポートされているプラットフォーム: Windows、Xbox One ファミリー本体、Xbox Series 本体

関連項目

XGameUIXGameUiShowWebAuthenticationAsync
XGameUiShowWebAuthenticationResultSize
XGameUiShowWebAuthenticationResult
XGameUiWebAuthenticationResultData
非同期プログラミング モデル