> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# XGameUiShowWebAuthenticationAsync

> XGameUiShowWebAuthenticationAsync

# XGameUiShowWebAuthenticationAsync

Inicia la solicitud de autenticación asincrónica que muestra una interfaz de usuario web que permite al usuario delegar el acceso a sitios web y servicios externos sin proporcionar directamente sus credenciales al título en ejecución.

## Sintaxis

```cpp theme={null}
HRESULT XGameUiShowWebAuthenticationAsync(  
         XAsyncBlock* async,  
         XUserHandle requestingUser,  
         const char* requestUri,  
         const char* completionUri  
)  
```

### Parámetros

*async*   \_In\_\
Tipo: [XAsyncBlock\*](/reference/system/xasync/structs/xasyncblock)

Un puntero al [XAsyncBlock](/reference/system/xasync/structs/xasyncblock) que se pasa a [XAsyncRun](/reference/system/xasync/functions/xasyncrun).

*requestingUser*   \_In\_\
Tipo: XUserHandle

Un identificador del usuario que solicita la autenticación web.

*requestUri*   \_In\_z\_\
Tipo: char\*

El URI inicial de la vista web presentada al usuario (que probablemente contiene campos para la autenticación del usuario en el servicio). El URI de la solicitud debe ser una dirección HTTPS segura.

*completionUri*   \_In\_z\_\
Tipo: char\*

Indica el URI que representa la finalización correcta del proceso de autenticación web. Cuando la vista web navega a un URI que coincide con *completionUri*, la vista web se cierra y el control se devuelve al título que realizó la llamada.

### Valor devuelto

Tipo: HRESULT

HRESULT de éxito o código de error de la llamada asincrónica.

Para obtener el resultado, llame a [xgameuishowwebauthenticationresultsize](/reference/system/xgameui/functions/xgameuishowwebauthenticationresultsize) y [xgameuishowwebauthenticationresult](/reference/system/xgameui/functions/xgameuishowwebauthenticationresult) dentro de la devolución de llamada de *AsyncBlock* o después de que *AsyncBlock* se haya completado.

## Comentarios

Cuando se ejecuta esta tarea asincrónica, el sistema presenta una vista web al usuario (superpuesta a la aplicación actual), con la que puede interactuar o que puede descartar presionando atrás. Esto permite a los usuarios usar OAuth para conceder permisos de autorización a sitios web y servicios externos. Esto se puede usar en escenarios como autenticar el juego para compartir momentos destacados del juego en redes sociales, solicitar datos de usuario de proveedores externos y mucho más.

El resultado de la solicitud de autenticación se almacena en el objeto [XGameUiWebAuthenticationResultData](/reference/system/xgameui/structs/xgameuiwebauthenticationresultdata) que devuelve el método [XGameUiShowWebAuthenticationResult](/reference/system/xgameui/functions/xgameuishowwebauthenticationresult).

Si la vista web se cierra como resultado de navegar al *completionUri*, el campo *responseStatus* de la estructura de datos de resultado será `S_OK`.

Si el usuario cancela o cierra manualmente la vista web de otra manera, el campo *responseStatus* de la estructura de datos de resultado será `E_CANCELLED`.

## Ejemplo

El siguiente ejemplo de código muestra cómo realizar OAuth mediante Facebook. Este ejemplo no incluye el control de errores de asignación de memoria para mantener el código breve.

```cpp theme={null}
// 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(XGameUiShowWebAuthenticationAsync(
    block,
    currentUser,
    requestUri,
    completionUri
    ));
```

## Requisitos

**Encabezado:** XGameUI.h

**Biblioteca:** xgameruntime.lib

**Plataformas compatibles:** Windows, consolas de la familia XBOX One y consolas XBOX Series

## Consulte también

[XGameUI](/reference/system/xgameui/xgameui_members)
[XGameUiShowWebAuthenticationWithOptionsAsync](/reference/system/xgameui/functions/xgameuishowwebauthenticationwithoptionsasync)
[XGameUiShowWebAuthenticationResultSize](/reference/system/xgameui/functions/xgameuishowwebauthenticationresultsize)\
[XGameUiShowWebAuthenticationResult](/reference/system/xgameui/functions/xgameuishowwebauthenticationresult)\
[XGameUiWebAuthenticationResultData](/reference/system/xgameui/structs/xgameuiwebauthenticationresultdata)\
[Modelo de programación asincrónica](/build/core-features/common/async/async-programming-model)


## Related topics

- [XGameUiShowWebAuthenticationResultSize](/es/reference/system/xgameui/functions/xgameuishowwebauthenticationresultsize.md)
- [XGameUiShowWebAuthenticationWithOptionsAsync](/es/reference/system/xgameui/functions/xgameuishowwebauthenticationwithoptionsasync.md)
- [XGameUiShowWebAuthenticationResult](/es/reference/system/xgameui/functions/xgameuishowwebauthenticationresult.md)
- [XGameUiWebAuthenticationResultData](/es/reference/system/xgameui/structs/xgameuiwebauthenticationresultdata.md)
- [XGameUI](/es/reference/system/xgameui/xgameui_members.md)
