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

# PlayFab GDPR - 플레이어 데이터 삭제 및 내보내기

> 일반 데이터 보호 규정(GDPR)을 준수할 수 있도록 PlayFab Admin API를 사용하여 플레이어의 데이터를 내보내거나 삭제하는 방법입니다.

PlayFab은 일반 데이터 보호 규정(GDPR)을 준수하기 위해 최선을 다하고 있으며, 사용자의 서비스 공급자로서 플레이어가 자신에 대해 저장된 데이터를 보거나 삭제할 수 있는 후크를 제공하는 것을 보장합니다.

법적 조언을 제공할 수는 없지만—*GDPR 준수를 확인하기 위해 법률 자문을 구할 것을 권장합니다*—GDPR에 따른 의무를 이행하는 데 도움을 드리겠습니다.

PlayFab에는 플레이어 데이터 요청에 응답하는 데 도움이 되는 세 가지 API가 있습니다.

* [GetPlayedTitleList](xref:titleid.playfabapi.com.admin.accountmanagement.getplayedtitlelist) - 이 API를 호출하여 지정된 플레이어와 관련된 데이터가 있는 TitleId 목록을 가져옵니다. 이 목록은 PublisherID로 범위가 지정되며 이 플레이어의 데이터를 삭제하거나 내보낼 경우 영향을 받는 타이틀 집합을 나타냅니다.
* [DeleteMasterPlayerAccount](xref:titleid.playfabapi.com.admin.accountmanagement.deletemasterplayeraccount) - 이 API를 호출하여 지정된 플레이어의 기록을 삭제합니다.
* [ExportMasterPlayerData](xref:titleid.playfabapi.com.admin.accountmanagement.exportmasterplayerdata) - 이 API를 호출하여 지정된 플레이어와 관련된 모든 데이터와 기록을 내보냅니다.

## 모든 데이터를 찾아야 합니다

`DeleteMasterPlayerAccount` 또는 `ExportMasterPlayerData` API를 사용하기 전에 플레이어가 스튜디오에서 여러 Master Player 계정을 만들었을 수 있음을 염두에 두는 것이 중요합니다.

이 상황은 플레이어가 다른 장치나 다른 자격 증명을 사용하여 타이틀을 플레이할 때 발생할 수 있습니다. 서로 다르고 관련이 없는 자격 증명(예: 다른 이메일 주소 또는 소셜 미디어 계정)을 제공하기 때문에 고유한 플레이어로 해석됩니다.

플레이어가 여러 Master Player 계정을 보유할 수 있는 또 다른 방법은 스튜디오에서 여러 Publisher ID를 사용하도록 구성한 경우입니다. 그러나 여러 Publisher ID를 갖는 것은 일반적이지 않습니다.

각 Title 설정 메뉴의 **API Features** 탭에서 PlayFab Game Manager에서 타이틀의 Publisher ID를 확인할 수 있습니다.

<img src="https://mintcdn.com/microsoft-4404708b/N3T1ucKV7zIMBudj/images/playfab/player-progression/player-data/tutorials/playfab-settings-api-tab.png?fit=max&auto=format&n=N3T1ucKV7zIMBudj&q=85&s=b26ea6fe4188ebef5fb76a58b4ae1b07" alt="PlayFab - Settings - API Tab" width="2560" height="1184" data-path="images/playfab/player-progression/player-data/tutorials/playfab-settings-api-tab.png" />

사용자는 자신의 타이틀과 플레이어를 인증하는 방법을 알고 있습니다. `DeleteMasterPlayerAccount` 또는 `ExportMasterPlayerData`를 호출하기 전에 플레이어로부터 올바른 장치 ID 및/또는 자격 증명 집합을 수집해야 합니다.

이러한 자격 증명을 사용하여 *각* Master Player 계정의 PlayFabId를 식별할 수 있습니다.

다음 API는 자격 증명에서 `PlayFabId`로 변환하는 데 도움이 됩니다.

* [GetUserAccountInfo](xref:titleid.playfabapi.com.admin.accountmanagement.getuseraccountinfo) - 이 API는 이메일, `TitleDisplayName`, `PlayFabId` 또는 `PlayFabUsername`으로 플레이어를 찾는 데 도움이 됩니다.
* [GetPlayerIdFromAuthToken](xref:titleid.playfabapi.com.admin.accountmanagement.getplayeridfromauthtoken) - 이 API를 사용하면 플레이어가 로그인할 때 부여받는 특정 `AuthToken`에서 플레이어를 찾을 수 있습니다.
* [GetPlayFabIDsFromFacebookIDs](xref:titleid.playfabapi.com.server.accountmanagement.getplayfabidsfromfacebookids) - 이 API는 하나 이상의 `FacebookId`에서 플레이어의 `PlayFabId`를 도출합니다.
* [GetPlayFabIDsFromSteamIDs](xref:titleid.playfabapi.com.server.accountmanagement.getplayfabidsfromsteamids) - 이 API는 하나 이상의 `SteamIds`에서 플레이어의 `PlayFabId`를 도출합니다.

<Note>
  이러한 API는 모두 타이틀 특정적입니다. 처음 두 개는 Admin API이고 마지막 두 개는 Server API입니다.
</Note>

플레이어에게 PlayFabId가 하나만 있더라도 해당 ID로 여러 타이틀을 플레이했을 수 있습니다. 이는 데이터 요청이 여러 타이틀에 걸쳐 있을 수 있음을 의미합니다.

이 타이틀 목록을 얻으려면 각 PlayFabId에 대해 `GetPlayedTitleList`를 호출합니다. 요청이 반환된 타이틀 목록에 영향을 미칠 것임을 플레이어에게 알리는 것이 좋을 *수 있습니다*.

또한, `GetPlayedTitleList`는 `Title Names`가 *아닌* `TitleIds`를 반환합니다 - 확인 페이지에 표시하기 전에 이러한 ID를 `Title Names`로 변환하는 것을 고려하세요.

우리가 의미하는 바를 더 잘 그려보기 위한 약간의 의사 코드입니다...

```csharp theme={null}
//Here you would iterate through a request of known Ids, Emails, linked accounts  
//or other PlayFab searchable info on the player that you have.
//and store it in user credentials for that player.
user {
  credentials: (email/ids/linked accounts)
}

//create a variable to hold a list of all the PlayFabIds you want to remove.
PlayFabIdList

//create a list of affected titles
AffectedTitles

//Keep track of all your titles, this is important
//and should include all titles across all your namespaces.
foreach(title in <all my titles>){

    //each user record you have for the player, you should have a list of credentials for that player
    //so you can find them in PlayFab
    foreach(cred in user.credentials){
      //There are a few helper Admin and Server API's that help you do this part.
      //See below this pseudo code block for some tips!
      pfid = <find PlayFabId in Title using the credential>
      PlayFabIdList.add(pfid)
    }

    //go through the list of PlayFabIds that you have and fine all titles that
    //performing the action would affect
    foreach(pfid in PlayFabIdList){
      AffectedTitles = title.GetPlayedTitleList(pfid)
    }
}
```

다음은 **GetPlayedTitleList**를 사용하는 간단한 예입니다.

```csharp theme={null}
public static async void StartFindTitlesExample(Action<PlayFabError> callback)
{

    var task = await PlayFabAdminAPI.GetPlayedTitleListAsync(new GetPlayedTitleListRequest() {
        PlayFabId = PlayFabId
    });

    if(task.Error != null)
    {
        callback(task.Error);
        return;
    }

    var TitleList = task.Result.TitleIds;
    foreach (var title in TitleList)
    {
        Console.WriteLine(string.Format("Title Found: {0}", title));
    }
    callback(null);
}
```

이 시점에서 이 플레이어의 `PlayFabId` 목록(공유한 자격 증명 기반)과 각 `PlayFabId`의 타이틀 목록이 있습니다. 이제 무엇을 해야 할까요?

이제 삭제하거나 내보낼 준비가 되었습니다!

## 기타 고려 사항

이러한 API로 피해를 입히기 쉽습니다. 잘못된 플레이어에 대해 데이터를 내보내거나 삭제하면 매우 큰 손해를 입힐 수 있으며 이는 **영구적**입니다!

플레이어 데이터의 내보내기 또는 삭제를 요청하는 플레이어의 자격 증명이 일치하는지 확인하는 것은 게임 개발자로서 사용자의 책임입니다. PlayFab은 이러한 API를 사용할 때 어떤 유형의 확인도 제공하지 않습니다.

그러나 PlayFab은 [이메일 확인 기능](/services/playfab/live-service-management/game-configuration/title-communications/emails/using-a-rule-to-verify-a-contact-email-address)을 제공합니다. 하지만 저희 솔루션이 확인의 유일한 옵션은 아닙니다. 자체 프로세스를 만들 수도 있습니다.

어떤 기술을 사용하든 이러한 작업을 수행하기 전에 어떤 종류의 확인을 수행하는 것을 권장합니다.


## Related topics

- [PlayFab GDPR - 플레이어 데이터 내보내기](/ko/services/playfab/data-analytics/privacy-compliance/gdpr-exporting-player-data.md)
- [PlayFab GDPR - 플레이어 데이터 삭제](/ko/services/playfab/data-analytics/privacy-compliance/gdpr-deleting-player-data.md)
- [PlayFab 플레이어 진행도 문서](/ko/services/playfab/player-progression/index.md)
- [PlayFab 데이터 및 분석 문서](/ko/services/playfab/data-analytics/index.md)
- [세그먼트의 플레이어 내보내기 자습서](/ko/services/playfab/live-service-management/game-configuration/segmentation/segmentation-export-players-in-a-segment.md)
