> ## 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.

# XGameUiShowWebAuthenticationWithOptionsAsync

> XGameUiShowWebAuthenticationWithOptionsAsync

# XGameUiShowWebAuthenticationWithOptionsAsync

Inicia a solicitação de autenticação assíncrona que exibe uma interface do usuário da Web, possivelmente em tela inteira, que permite ao usuário delegar acesso a sites e serviços externos sem fornecer diretamente suas credenciais ao título em execução.

## Sintaxe

```cpp theme={null}
STDAPI XGameUiShowWebAuthenticationWithOptionsAsync(
    _In_ XAsyncBlock* async,
    _In_ XUserHandle requestingUser,
    _In_z_ const char* requestUri,
    _In_z_ const char* completionUri,
    _In_ XGameUiWebAuthenticationOptions options
    ) noexcept;
)  
```

### Parâmetros

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

Um ponteiro para o [XAsyncBlock](/pt-BR/reference/system/xasync/structs/xasyncblock) que é passado para [XAsyncRun](/pt-BR/reference/system/xasync/functions/xasyncrun).

*requestingUser*   \_In\_\
Tipo: XUserHandle

Um identificador para o usuário que está solicitando a autenticação na Web.

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

O URI inicial do modo de exibição da Web apresentado ao usuário (provavelmente contendo campos para a autenticação do usuário no serviço). O URI de solicitação deve ser um endereço HTTPS seguro.

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

Indica o URI que representa a conclusão bem-sucedida do processo de autenticação na Web. Quando o modo de exibição da Web navega para um URI que corresponde a *completionUri*, o modo de exibição da Web é fechado e o controle é devolvido ao título que fez a chamada.

*options* \&nbps; \_In\_
Tipo: [XGameUiWebAuthenticationOptions](/pt-BR/reference/system/xgameui/enums/xgameuiwebauthenticationoptions)

Sinalizador que indica se deve ou não tentar mostrar a interface do usuário em tela inteira. No PC, esse sinalizador é ignorado. A tela inteira
não é uma opção com suporte no PC.

### Valor retornado

Tipo: HRESULT

Código de êxito ou de erro HRESULT da chamada assíncrona.

Para obter o resultado, chame [xgameuishowwebauthenticationresultsize](/pt-BR/reference/system/xgameui/functions/xgameuishowwebauthenticationresultsize) e [xgameuishowwebauthenticationresult](/pt-BR/reference/system/xgameui/functions/xgameuishowwebauthenticationresult) dentro do retorno de chamada do *AsyncBlock* ou após a conclusão do *AsyncBlock*.

## Comentários

Quando essa tarefa assíncrona é executada, o sistema apresenta ao usuário um modo de exibição da Web (sobreposto ao aplicativo atual), com o qual ele pode interagir ou que pode descartar pressionando Voltar. Isso permite que os usuários usem o OAuth para conceder permissão de autorização a sites e serviços externos. Isso pode ser usado em cenários como autenticar o jogo para compartilhar destaques do jogo em redes sociais, solicitar dados do usuário a provedores externos e muito mais.

O resultado da solicitação de autenticação é armazenado no objeto [XGameUiWebAuthenticationResultData](/pt-BR/reference/system/xgameui/structs/xgameuiwebauthenticationresultdata), que é retornado pelo método [XGameUiShowWebAuthenticationResult](/pt-BR/reference/system/xgameui/functions/xgameuishowwebauthenticationresult).

Se o modo de exibição da Web for fechado como resultado da navegação para *completionUri*, o campo *responseStatus* da estrutura de dados do resultado será `S_OK`.

Se o usuário cancelar ou fechar manualmente o modo de exibição da Web de outra forma, o campo *responseStatus* da estrutura de dados do resultado será `E_CANCELLED`.

## Exemplo

O exemplo de código a seguir mostra como executar o OAuth usando o Facebook. Este exemplo não inclui o tratamento de erros de alocação de memória para manter o 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(XGameUiShowWebAuthenticationWithOptionsAsync(
    block,
    currentUser,
    requestUri,
    completionUri,
    XGameUiWebAuthenticationOptions::PreferFullscreen
    ));
```

## Requisitos

**Cabeçalho:** XGameUI.h

**Biblioteca:** xgameruntime.lib

**Plataformas com suporte:** Windows, consoles da família XBOX One e consoles XBOX Series

## Confira também

[XGameUI](/pt-BR/reference/system/xgameui/xgameui_members)
[XGameUiShowWebAuthenticationAsync](/pt-BR/reference/system/xgameui/functions/xgameuishowwebauthenticationasync)\
[XGameUiShowWebAuthenticationResultSize](/pt-BR/reference/system/xgameui/functions/xgameuishowwebauthenticationresultsize)\
[XGameUiShowWebAuthenticationResult](/pt-BR/reference/system/xgameui/functions/xgameuishowwebauthenticationresult)\
[XGameUiWebAuthenticationResultData](/pt-BR/reference/system/xgameui/structs/xgameuiwebauthenticationresultdata)\
[Modelo de programação assíncrona](/pt-BR/build/core-features/common/async/async-programming-model)


## Related topics

- [XGameUiShowWebAuthenticationWithOptionsAsync](/reference/system/xgameui/functions/xgameuishowwebauthenticationwithoptionsasync.md)
- [XGameUiWebAuthenticationOptions](/reference/system/xgameui/enums/xgameuiwebauthenticationoptions.md)
