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

# Request parties from your services with RequestPartyService

> 자체 게임 서비스에서 PlayFab RequestPartyService API를 호출하여 멀티플레이어 채팅 및 데이터 세션을 위한 Party 네트워크를 프로비저닝하는 자습서입니다.

이 자습서는 클라이언트에서만이 아니라 자체 서비스에서 ***RequestPartyService API***를 사용하여 Party를 요청하는 단계를 설명합니다. 이를 통해 HTTP 호출을 통해 게임에 PlayFab Party를 통합하는 방법에 대해 더 많은 유연성과 제어권을 얻을 수 있습니다.

* 자체 인증 및 권한 부여 메커니즘을 사용하거나 Party 생성 및 참가의 사용자 인터페이스와 사용자 경험을 사용자 지정할 수 있습니다.
* 완전히 자신의 조건에 따라 PlayFab Party를 할당할 수 있습니다. 서비스 측에서 릴레이 네트워크를 관리하면 자체 서비스를 사용하거나 [PlayStream 및 CloudScript](/services/playfab/data-analytics/acting-data/action-rules-using-cloudscript-actions-with-playstream)의 도움을 받아 복잡한 네트워크 토폴로지를 효과적이고 안정적으로 설정할 수 있습니다.
* Party 생성을 서비스로만 제한할 수 있는 권한을 부여함으로써 클라이언트에 의한 남용에 대한 추가 방어를 제공합니다.

## 사전 요구 사항

PlayFab 계정이 필요하며 Party 기능이 활성화되어 있어야 합니다.

1. [PlayFab 계정](https://developer.playfab.com)을 만들거나 로그인합니다.
2. PlayFab 계정에서 [Game Manager를 통해 Party 기능을 활성화](/services/playfab/multiplayer/networking/enable-party)합니다.
3. Party SDK를 다운로드하고 설정합니다. 다운로드 링크는 [Party SDK](/services/playfab/multiplayer/networking/party-sdks/overview)를 참조하세요.

<Note>
  이 자습서는 보다 포괄적인 [Party Quickstart](/services/playfab/multiplayer/networking/quickstart) 문서의 일부 단계에 대한 대체 프로세스입니다.
</Note>

### 1. GameManager에서 PlayFab title secret key 수집

1. \*\*[Game Manager](https://developer.playfab.com/)\*\*에 로그인합니다.
2. 타이틀을 선택합니다.
3. 오른쪽 위 모서리에서 기어 아이콘을 선택합니다.
4. **Title settings**를 선택한 다음 **Secret Keys** 탭을 선택합니다.

자세한 내용은 [Secret Key Management](/services/playfab/live-service-management/gamemanager/secret-key-management)를 참조하세요.

### 2. PlayFab 엔터티 토큰 획득

서비스에서 [GetEntityToken](https://learn.microsoft.com/en-us/rest/api/playfab/authentication/authentication/get-entity-token) REST API를 사용하여 타이틀 SecretKey를 Entity Token으로 교환합니다.

```js theme={null}
async function getEntityToken(titleId, secretKey) {
  try {

    // Construct the request URL
    const requestUrl =
      `https://${titleId}.playfabapi.com/Authentication/GetEntityToken`;

    // Create headers with your secret key and content type
    const headers = {
      'X-SecretKey': secretKey,
      'Content-Type': 'application/json', // Add this line
    };

    // Make the POST request
    const response = await fetch(requestUrl, {
      method: 'POST',
      headers: headers,
    });

    // Check if the response is successful
    if (response.ok) {
      const responseBody = await response.json();
      console.log(`Entity Token: ${responseBody.data.EntityToken}`);
      return responseBody.data.EntityToken;
    } else {
      console.error(`Error: ${response.status}`);
    }
  } catch (error) {
    console.error(`Exception: ${error.message}`);
  }
}
```

### 3. POST 요청 수행

검색된 entity token을 사용하여 Party에 대해 원하는 매개 변수와 함께 [RequestPartyService](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/multiplayer-server/request-party-service) 엔드포인트에 POST 요청을 수행합니다.

```js theme={null}
async function requestPartyService(titleId, entityToken) {
  try {

    // Construct the request URL
    const requestUrl = `https://${titleId}.playfabapi.com/Party/RequestPartyService`;

    // Create headers with the entity token and content type
    const headers = {
      'X-EntityToken': entityToken,
      'Content-Type': 'application/json',
    };

    // Create the request body with PartyNetworkConfiguration and PreferredRegions
    const requestBody = {
      NetworkConfiguration: {
        MaxUsers: 4,
        MaxDevices: 4,
        MaxDevicesPerUser: 1,
        MaxUsersPerDevice: 1,
      },
      PreferredRegions: ['WestUs'],
    };

    // Make the POST request
    const response = await fetch(requestUrl, {
      method: 'POST',
      headers: headers,
      body: JSON.stringify(requestBody),
    });

    // Check if the response is successful
    if (response.ok) {
      const responseBody = await response.json();
      console.log('Party service response:', responseBody);
    } else {
      console.error(`Error: ${response.status}`);
    }
  } catch (error) {
    console.error(`Exception: ${error.message}`);
  }
  return null;
}
```

### 4. 응답 수신

POST 요청 후에 [network descriptor](https://learn.microsoft.com/en-us/rest/api/playfab/multiplayer/multiplayer-server/request-party-service#requestpartyserviceresponse)를 포함하는 응답을 받게 됩니다. 여기에는 Party 서버에 연결하는 클라이언트에 필요한 모든 세부 정보가 포함되어 있습니다.

```json theme={null}
{
    "code": 200,
    "status": "OK",
    "data": {
        "PartyId": "0543645b-9004-4784-95d7-459cef4a23fa",
        "SerializedNetworkDescriptor": "AwBnP28mW2RDBQSQhEeV10Wc70oj+ldlc3RVcwAAAAAAAAAAAAAAAAAAPXqiEpapxSC+Owo1h8qJ5NuEOmtS0oeJqq8h6q5ybZZrbktkbnMtaXIwLTgxZTUtNTI3MWZiZDYtMmMyYS00NGE0LThhNjAtNmZlZjI4ZDAzMjc5Lndlc3R1cy5jbG91ZGFwcC5henVyZS5jb20=",
        "InvitationId": "e95366d4-c9ed-4a6e-94f6-215c1d69d467"
    }
}
```

### 5. 네트워크 설명자 공유

네트워크의 잠재적 참여자에게 네트워크 설명자를 공유합니다. 이를 수행하는 방법은 다양합니다. PlayFab Lobby를 사용하는 클라이언트는 [Party와 Lobby 통합](/services/playfab/multiplayer/networking/party-lobby-integration)의 지침을 따라야 합니다. 빠른 테스트 목적으로 Party 네트워크 설명자를 [수동으로 공유](/services/playfab/multiplayer/networking/quickstart#manually-share-party-network-descriptor)하거나 게임의 요구에 따라 자체 lobby 서비스와 초대를 사용할 수도 있습니다.

### 6. Party 서버에 연결

클라이언트는 네이티브 SDK를 평소처럼 사용하여 네트워크 설명자를 통해 Party 서버에 연결할 수 있습니다. Party 네트워크에 처음 연결하는 경우 Quickstart 가이드의 [Party 네트워크에 연결](/services/playfab/multiplayer/networking/quickstart#connect-to-a-party-network) 섹션을 참조하세요.

## 함께 보기

* [Party quickstart](/services/playfab/multiplayer/networking/quickstart)
* [Party features](/services/playfab/multiplayer/networking/party-features)
* [Party samples](/services/playfab/multiplayer/networking/party-samples)
* [Multiplayer services](/services/playfab/multiplayer/mpintro)
* [Party invitations and the security model](/services/playfab/multiplayer/networking/concepts-invitations-security-model)
* [Party API reference documentation](/services/playfab/multiplayer/networking/reference/party_members)


## Related topics

- [PartyXblManager::CompleteGetTokenAndSignatureRequest](/ko/services/playfab/multiplayer/networking/xblreference/classes/PartyXblManager/methods/partyxblmanager_completegettokenandsignaturerequest.md)
- [PlayFab Services SDK 릴리스 노트 2023](/ko/services/playfab/release-notes/2023.md)
- [PC 및 모바일 게임용 XBOX Network Services DPA](/ko/publishing/certification/xbox-network-data-processing-addendum.md)
- [PartyXblTokenAndSignatureRequestedStateChange](/ko/services/playfab/multiplayer/networking/xblreference/structs/partyxbltokenandsignaturerequestedstatechange.md)
- [PartyXblThreadId](/ko/services/playfab/multiplayer/networking/xblreference/enums/partyxblthreadid.md)
