PlayFab GDPR - プレイヤーのデータを削除、エクスポートする

PlayFab は一般データ保護規則 (GDPR) に準拠することに尽力し、サービス プロバイダーとして、プレーヤーが自分について保存されているデータを表示または削除できるようにするために必要なフックを確実に提供します。

当社は法的なアドバイスを提供することはできませんが、GDPR を確実に遵守するために法律顧問に相談することをお勧めします。当社は、お客様が GDPR に基づく義務を履行できるようお手伝いいたします。

PlayFab は、プレイヤー データの要求に応じられるよう 3 つの API を使用できます。

  • GetPlayedTitleList - この API を呼び出して、指定されたプレーヤーに関連付けられたデータを持つ TitleId のリストを取得します。 このリストは PublisherID によって範囲が定められており、このプレーヤーのデータを削除またはエクスポートした場合に影響を受けるタイトルのセットを表します。
  • DeleteMasterPlayerAccount - この API を呼び出し、特定プレイヤーのレコードを削除します。
  • ExportMasterPlayerData - この API を呼び出し、特定プレイヤーに関連付けられたデータとレコードのすべてをエクスポートします。

すべてのデータが見つかったことを確認します。

DeleteMasterPlayerAccount または ExportMasterPlayerData API を使用する前に、プレーヤーがスタジオで複数のマスター プレーヤー アカウントを作成している可能性があることに留意することが重要です。

この状況は、プレーヤーがタイトルを再生するために別のデバイスまたは別の認証情報を使用している場合に発生する可能性があります。 これらは、異なる無関係な資格情報 (たとえば、異なる電子メール アドレスやソーシャル メディア アカウント) を提供しているため、それらを一意のプレーヤーであると解釈します。

プレイヤーが複数のマスター プレイヤー アカウントを持つ可能性のある別の方法としては、複数のパブリッシャー IDを使えるようスタジオを設定した場合があります。ただし、複数のパブリッシャー ID を持つことは一般的ではありません。

PlayFab ゲーム マネージャーでタイトルのパブリッシャー ID を確認するには、各 タイトル設定メニューの [API] タブを使用します。

PlayFab - 設定 - API タブ

タイトルとプレイヤーの認証方法が分かります。 ExportMasterPlayerData または DeleteMasterPlayerAccount を呼び出す前に、プレイヤーからデバイス ID や資格情報の適切なセットを収集してください。

これらの資格情報を使用して、 マスター プレイヤー アカウントの PlayFabIds を識別できます。

次の API は、資格情報を PlayFabId に変換するのに役立ちます。

  • GetUserAccountInfo - この API は、メール、TitleDisplayNamePlayFabId、または PlayFabUsername でプレーヤーを検索するのに役立ちます。
  • GetPlayerIdFromAuthToken - この API を使用すると、ログイン時にプレーヤーに付与される特定の AuthToken からプレーヤーを見つけることができます。
  • GetPlayFabIDsFromFacebookIDs - この API は 1 つ以上の FacebookId からプレイヤーの PlayFabId を取得します。
  • GetPlayFabIDsFromSteamIDs - この API は 1 つ以上の SteamIds からプレイヤーの PlayFabId を取得します。

注意

これらの API はすべてタイトル特有の物です。 最初の 2 つは管理 API で、後の 2 つはサーバー API です。

プレイヤーが 1 つの PlayFabId だけを持っている場合でも、その ID で 1 つ以上のタイトルをプレイする場合があります。 つまり、データ要求は複数のタイトルにまたがる可能性があります。

このタイトルの一覧を取得するには、各 PlayFabId の GetPlayedTitleList を呼び出します。 プレーヤーのリクエストが返されるタイトルのリストに影響を与えることをプレーヤーに通知することもできます

さらに、GetPlayedTitleListTitleIds、を返し、Title Names は返しません。確認ページに表示する前に、これらの ID を Title Names に変換することを検討してください。

理解をより深めるため、小さな擬似コードを取り上げます。

//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 の使用方法の簡単な例を次に示します。

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

この時点で、このプレーヤーの PlayFabIds のリスト (共有した認証情報に基づく) と、各 PlayFabId のタイトルのリストが得られます。 次は何を行いますか?

削除またはエクスポートをする準備が整いました。

その他の考慮事項

これらの API を使用すると、簡単に害を及ぼすことができます。 間違ったプレーヤーのデータをエクスポートしたり削除したりすると、大きな損害が発生する可能性があり、それは永続的になります。

資格情報がプレーヤー データのエクスポートまたは削除を要求しているプレーヤーと一致することを確認するのは、ゲーム開発者としての責任です。 PlayFab では、これらの API を使用する場合、いかなる種類の確認も行いません。

ただし、PlayFab には、メール検証機能があります。 しかし、私たちのソリューションが検証の唯一の選択肢ではありません。 独自の処理も作成できます。

どのテクノロジを使用しようと関係なく、これらのアクションを実行する前に、同様の確認をすることをお勧めします。