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

Lance la demande d'authentification asynchrone qui affiche une interface utilisateur web permettant à l'utilisateur de déléguer l'accès à des sites et services web externes sans fournir directement ses informations d'identification au titre en cours d'exécution.

## Syntaxe

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

### Paramètres

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

Pointeur vers le [XAsyncBlock](/fr/reference/system/xasync/structs/xasyncblock) qui est passé à [XAsyncRun](/fr/reference/system/xasync/functions/xasyncrun).

*requestingUser*   \_In\_\
Type : XUserHandle

Handle de l'utilisateur qui demande l'authentification web.

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

URI initial de la vue web présentée à l'utilisateur (contenant probablement des champs permettant l'authentification de l'utilisateur auprès du service). L'URI de demande doit être une adresse HTTPS sécurisée.

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

Indique l'URI qui représente la réussite du processus d'authentification web. Lorsque la vue web accède à un URI qui correspond à *completionUri*, la vue web est fermée et le contrôle est rendu au titre appelant.

### Valeur de retour

Type : HRESULT

Code de réussite ou d'erreur HRESULT de l'appel asynchrone.

Pour obtenir le résultat, appelez [xgameuishowwebauthenticationresultsize](/fr/reference/system/xgameui/functions/xgameuishowwebauthenticationresultsize) et [xgameuishowwebauthenticationresult](/fr/reference/system/xgameui/functions/xgameuishowwebauthenticationresult) dans le rappel *AsyncBlock* ou une fois l'*AsyncBlock* terminé.

## Remarques

Lorsque cette tâche asynchrone s'exécute, le système présente à l'utilisateur une vue web (superposée à l'application actuelle), avec laquelle il peut interagir ou qu'il peut fermer en appuyant sur Retour. Cela permet aux utilisateurs d'utiliser OAuth pour accorder une autorisation à des sites et services web externes. Cela peut être utilisé dans des scénarios tels que l'authentification du jeu pour partager des temps forts du jeu sur les réseaux sociaux, la demande de données utilisateur auprès de fournisseurs externes, etc.

Le résultat de la demande d'authentification est stocké dans l'objet [XGameUiWebAuthenticationResultData](/fr/reference/system/xgameui/structs/xgameuiwebauthenticationresultdata) retourné par la méthode [XGameUiShowWebAuthenticationResult](/fr/reference/system/xgameui/functions/xgameuishowwebauthenticationresult).

Si la vue web est fermée à la suite de l'accès à *completionUri*, le champ *responseStatus* de la structure de données de résultat a la valeur `S_OK`.

Si l'utilisateur annule ou ferme manuellement la vue web d'une autre manière, le champ *responseStatus* de la structure de données de résultat a la valeur `E_CANCELLED`.

## Exemple

L'exemple de code suivant montre comment effectuer une authentification OAuth à l'aide de Facebook. Pour que le code reste concis, cet exemple n'inclut pas la gestion des erreurs d'allocation de mémoire.

```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
    ));
```

## Configuration requise

**En-tête :** XGameUI.h

**Bibliothèque :** xgameruntime.lib

**Plateformes prises en charge :** Windows, consoles de la famille XBOX One et consoles XBOX Series

## Voir aussi

[XGameUI](/fr/reference/system/xgameui/xgameui_members)
[XGameUiShowWebAuthenticationWithOptionsAsync](/fr/reference/system/xgameui/functions/xgameuishowwebauthenticationwithoptionsasync)
[XGameUiShowWebAuthenticationResultSize](/fr/reference/system/xgameui/functions/xgameuishowwebauthenticationresultsize)\
[XGameUiShowWebAuthenticationResult](/fr/reference/system/xgameui/functions/xgameuishowwebauthenticationresult)\
[XGameUiWebAuthenticationResultData](/fr/reference/system/xgameui/structs/xgameuiwebauthenticationresultdata)\
[Modèle de programmation asynchrone](/fr/build/core-features/common/async/async-programming-model)


## Related topics

- [XGameUiShowWebAuthenticationAsync](/reference/system/xgameui/functions/xgameuishowwebauthenticationasync.md)
- [XGameUiShowWebAuthenticationResultSize](/reference/system/xgameui/functions/xgameuishowwebauthenticationresultsize.md)
