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

# Obtention d'une relation sociale

> Exemple de code C plat XSAPI qui utilise XblSocialGetSocialRelationshipsAsync pour récupérer les amis d'un utilisateur XBOX Live et les propriétés publiques de leur relation.

<Note>Cette rubrique illustre une utilisation avancée de l'API. Si vous rencontrez un scénario non pris en charge dans Social Manager, informez-en votre gestionnaire de compte développeur (DAM).</Note>

Cette rubrique fournit un exemple de code qui montre comment utiliser l'API Social Manager pour récupérer les relations sociales d'un utilisateur et leurs propriétés publiques.

Pour prendre en main Social Manager, consultez [Vue d'ensemble de Social Manager](/fr-CA/services/xbox-services/community/social-manager/live-social-manager-overview).
L'API Social Manager simplifie considérablement le développement lorsqu'il s'agit de suivre les amis en ligne et leur activité de jeu.

## Obtention des relations sociales du premier utilisateur

L'exemple de code suivant montre comment récupérer une relation sociale avec les services XBOX.

L'exemple de code effectue les opérations suivantes :

1. Génère la liste de tous les utilisateurs du système, puis récupère le premier utilisateur.
2. Récupère toutes les relations sociales de cet utilisateur.
3. Affiche les propriétés publiques de chacune de ces relations.

**API C plate**

```cpp theme={null}
auto asyncBlock = std::make_unique<XAsyncBlock>(); 
asyncBlock->queue = queue;
asyncBlock->context = nullptr;
asyncBlock->callback = [](XAsyncBlock* asyncBlock)
{
    std::unique_ptr<XAsyncBlock> asyncBlockPtr{ asyncBlock }; // Take over ownership of XAsyncBlock*.
    HRESULT hr = XblSocialGetSocialRelationshipsResult(asyncBlock, &state.socialResultHandle);

    // Be sure to call XblSocialRelationshipResultCloseHandle when the result object is no longer needed.
};

HRESULT hr = XblSocialGetSocialRelationshipsAsync(
    xboxLiveContext,
    xboxUserId,
    socialRelationshipFilter,
    0,
    0,
    asyncBlock.get()
);

if (SUCCEEDED(hr))
{
    // The call succeeded, so release the std::unique_ptr ownership of XAsyncBlock* because the callback will take over ownership.
    // If the call fails, std::unique_ptr will keep ownership and delete XAsyncBlock*.
    asyncBlock.release();
}
```

Pour plus d'informations, consultez les rubriques suivantes :

* [XAsyncBlock](/fr-CA/reference/system/xasync/structs/xasyncblock)
* [XblSocialGetSocialRelationshipsAsync](/fr-CA/reference/live/xsapi-c/social_c/functions/xblsocialgetsocialrelationshipsasync)
* [XblSocialGetSocialRelationshipsResult](/fr-CA/reference/live/xsapi-c/social_c/functions/xblsocialgetsocialrelationshipsresult)
* [XblSocialRelationshipResultCloseHandle](/fr-CA/reference/live/xsapi-c/social_c/functions/xblsocialrelationshipresultclosehandle)

## Obtention d'une seule relation

**API C plate**

```cpp theme={null}
const XblSocialRelationship* relationships = nullptr;
size_t relationshipsCount = 0;
HRESULT hr = XblSocialRelationshipResultGetRelationships(state.socialResultHandle, &relationships, &relationshipsCount);

LogToFile("Got %u SocialRelationships:", relationshipsCount);
for (size_t i = 0; i < relationshipsCount; ++i)
{
    LogToFile("Xuid = %u, isFollowingCaller = %u", relationships[i].xboxUserId, relationships[i].isFollowingCaller);
}
```

Pour plus d'informations, consultez les rubriques suivantes :

* [XblSocialRelationship](/fr-CA/reference/live/xsapi-c/social_c/structs/xblsocialrelationship)
* [XblSocialRelationshipResultGetRelationships](/fr-CA/reference/live/xsapi-c/social_c/functions/xblsocialrelationshipresultgetrelationships)

## Obtention de la page suivante de relations

**API C plate**

```cpp theme={null}
bool hasNext{ false };
HRESULT hr = XblSocialRelationshipResultHasNext(state.socialResultHandle, &hasNext);

if (hasNext)
{
    auto asyncBlock = std::make_unique<XAsyncBlock>(); 
    asyncBlock->queue = queue;
    asyncBlock->context = nullptr;
    asyncBlock->callback = [](XAsyncBlock* asyncBlock)
    {
        std::unique_ptr<XAsyncBlock> asyncBlockPtr{ asyncBlock }; // Take over ownership of XAsyncBlock*.
        // Close the handle to the previous page of results.
        if (state.socialResultHandle)
        {
            XblSocialRelationshipResultCloseHandle(state.socialResultHandle);
        }
        HRESULT hr = XblSocialRelationshipResultGetNextResult(asyncBlock, &state.socialResultHandle);
    };

    uint32_t maxItems = 100;
    HRESULT hr = XblSocialRelationshipResultGetNextAsync(xboxLiveContext, state.socialResultHandle, maxItems, asyncBlock.get());
    if (SUCCEEDED(hr))
    {
        // The call succeeded, so release the std::unique_ptr ownership of XAsyncBlock* because the callback will take over ownership.
        // If the call fails, std::unique_ptr will keep ownership and delete XAsyncBlock*.
        asyncBlock.release();
    }
}
```

Pour plus d'informations, consultez les rubriques suivantes :

* [XAsyncBlock](/fr-CA/reference/system/xasync/structs/xasyncblock)
* [XblSocialRelationshipResultCloseHandle](/fr-CA/reference/live/xsapi-c/social_c/functions/xblsocialrelationshipresultclosehandle)
* [XblSocialRelationshipResultGetNextAsync](/fr-CA/reference/live/xsapi-c/social_c/functions/xblsocialrelationshipresultgetnextasync)
* [XblSocialRelationshipResultGetNextResult](/fr-CA/reference/live/xsapi-c/social_c/functions/xblsocialrelationshipresultgetnextresult)
* [XblSocialRelationshipResultHasNext](/fr-CA/reference/live/xsapi-c/social_c/functions/xblsocialrelationshipresulthasnext)


## Related topics

- [Exemple de code du système de personnes (liste d'amis)](/fr-CA/services/xbox-services/community/people-system/how-to/live-pplsys-howto-nav.md)
- [Procédures](/fr-CA/services/xbox-services/community/people-system/how-to/index.md)
- [Créer une statistique de base](/fr-CA/services/playfab/player-progression/statistics/create-basic-statistics.md)
- [Vue d'ensemble des fonctionnalités sociales](/fr-CA/services/xbox-services/community/live-social-overview.md)
- [Gestion d'un changement de relation sociale](/fr-CA/services/xbox-services/community/people-system/how-to/live-handling-a-relationship-change.md)
