PlayFab DSGVO – Löschen und Exportieren von Spielerdaten
PlayFab ist bestrebt, DSGVO-konform zu sein – und als Ihr Dienstanbieter sicherzustellen, dass wir Ihnen die Hooks zur Verfügung stellen, die Sie benötigen, damit die Spieler die über sie gespeicherten Daten anzeigen oder löschen können.
Obwohl wir Ihnen keinen Rechtsrat ** geben können – und wir empfehlen Ihnen, Rechtsberater zu ernennen, um Ihre Einhaltung der DSGVO sicherzustellen –, sind wir hier, um Ihnen bei der Erfüllung Ihrer Verpflichtungen im Rahmen der DSGVO zu helfen.
PlayFab verfügt über drei verfügbare APIs, mit deren Hilfe Sie auf Datenanforderungen des Spielers reagieren können:
- GetPlayedTitleList – Rufen Sie diese API auf, um eine Liste der TitleIds zu erhalten, deren Daten dem angegebenen Spieler zugeordnet sind. Diese Liste ist durch PublisherID begrenzt und stellt die Reihe von Titeln dar, die betroffen wären, wenn Sie die Daten dieses Spielers löschen oder exportieren würden.
- DeleteMasterPlayerAccount – Rufen Sie diese API auf, um die Einträge eines bestimmten Spielers zu löschen.
- ExportMasterPlayerData – Rufen Sie diese API auf, um alle zugehörigen Daten und Datensätze eines bestimmten Spielers zu exportieren.
Sicherstellen, dass alle Daten zu finden sind
Bevor Sie die APIs oder verwenden, sollten Sie bedenken, dass Ihre Spieler möglicherweise mehrere DeleteMasterPlayerAccount
Master Player-Konten in Ihrem Studio erstellt ExportMasterPlayerData
haben.
Dies kann geschehen, wenn ein Spieler unterschiedliche Geräte oder unterschiedliche Anmeldeinformationen zum Spielen Ihrer Titel verwendet. Da sie unterschiedliche Anmeldeinformationen und keine verwandten Anmeldeinformationen (z. B. eine andere E-Mail-Adresse oder ein Konto bei sozialen Netzwerken) bereitstellen, werden sie als eindeutiger Spieler interpretiert.
Eine weitere Möglichkeit, wie ein Spieler über mehrere Master Player-Konten verfügt, ist, wenn Sie Ihr Studio für die Verwendung mehrerer Publisher konfiguriert haben. die Verwendung mehrerer Publisher-IDs ist jedoch nicht üblich.
Sie können die Titel-IDs Publisher PlayFab Game Manager auf der Registerkarte API-Features jedes Titeleinstellungsmenüs überprüfen.
Sie kennen Ihre Titel und wie sie Ihre Spieler authentifizieren. Stellen Sie vor dem Aufrufen von oder sicher, dass Sie die richtigen DeleteMasterPlayerAccount
ExportMasterPlayerData
Geräte-IDs und/oder Anmeldeinformationen von Ihren Spielern sammeln.
Mit diesen Anmeldeinformationen können wir die PlayFabIds für jedes Master Player-Konto identifizieren.
Die folgenden APIs helfen Ihnen beim Übersetzen von Anmeldeinformationen in PlayFabId
:
- GetUserAccountInfo – Diese API hilft Ihnen, Spieler per E-Mail,
TitleDisplayName
, oder einem zuPlayFabId
PlayFabUsername
finden. - GetPlayerIdFromAuthToken – Mit dieser API können Sie in einem bestimmten Spieler suchen, der dem Spieler bei der Anmeldung
AuthToken
gewährt wird. - GetPlayFabIDsFromFacebookIDs: Diese API leitet die des Spielers von einer oder
PlayFabId
FacebookId
mehreren (s) ab. - GetPlayFabIDsFromSteamIDs: Diese API leitet die des Spielers
PlayFabId
von einem oder mehrerenSteamIds
ab.
Hinweis
Alle diese APIs sind titelspezifisch. Die ersten beiden APIs sind Administrator-APIs und die letzten beiden Server-APIs.
Auch wenn Ihr Spieler nur über eine PlayFabId verfügt, hat er möglicherweise mehrere Ihrer Titel mit dieser ID gespielt. Dies bedeutet, dass ihre Datenanforderung mehrere Titel umfassen kann.
Rufen Sie für jede PlayFabId auf, um diese Liste GetPlayedTitleList
der Titel zu erhalten. Möglicherweise möchten Sie den Spieler darüber informieren, dass sich die Anforderung auf die zurückgegebene Liste der Titel auswirken wird.
Gibt außerdem zurück , nicht – erwägen Sie, diese in zu GetPlayedTitleList
TitleIds
** Title Names
Title Names
konvertieren, bevor sie auf einer Bestätigungsseite angezeigt werden.
Hier ist ein kleiner Pseudocode, um ein besseres Bild von dem zu zeichnen, was wir meinen...
//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)
}
}
Hier ist ein schnelles Beispiel zur Verwendung von 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);
}
An diesem Punkt verfügen Sie über eine Liste von für diesen Spieler (basierend auf den von diesem Spieler freigegebenen Anmeldeinformationen) und eine Liste PlayFabIds
mit Titeln für jeden PlayFabId
. Und was jetzt?
Jetzt können Sie die Datei löschen oder exportieren!
Löschen eines Master Player-Kontos
Das Löschen eines Master Player-Kontos kann mithilfe der neuen DeleteMasterPlayerAccount
Administrator-API erreicht werden, die in allen SDKs verfügbar ist. Lesen Sie unbedingt den vorstehenden Abschnitt, in dem Sie erfahren, wie Sie sicherstellen können, dass Sie über alle PlayFabIds eines Spielers verfügen.
Wenn Sie eine Anforderung zum Löschen eines Spielers stellen, entfernt PlayFab schnell die persönlichen Informationen des Spielers aus unserem Core-System, bevor die Anforderung an einen Warteschlangenverarbeitungs-Agenten gesendet wird. Damit werden alle verbleibenden Informationen über den Spieler aus zusätzlichen Systemen und Unterprozessoren entfernt.
Diese API wird sofort zurückgegeben und stellt ein JobReceiptId
bereit, das Sie für Ihre Einträge speichern sollten. Die JobReceiptId ist Ihre Überprüfung, dass PlayFab die Anforderung zum Löschen des Spielers erhalten hat.
Nach Abschluss der Löschung wird eine E-Mail an die für den Titel konfigurierte Benachrichtigungs-E-Mail-Adresse gesendet. Sie enthält denselben , der ursprünglich von der API JobReceiptId
zurückgegeben wurde. Durch den Abschluss der Aufgabe wird auch ein PlayStream-Ereignis ausgelöst.
Mit unserem Webhook-Feature können Sie sich für den Empfang dieser Ereignisse an einem Endpunkt Ihrer Wahl registrieren und diese nach Bedarf verarbeiten. Das -Ereignis enthält ein JSON-BLOB, das den JobReceiptId
enthält.
Das folgende Beispiel zeigt, wie Sie die Admin-API mit dem C# SDK verwenden. Wenn Sie ein anderes SDK verwenden möchten, wählen Sie ein SDK aus der Liste der PlayFab-SDKs aus.
public static async void StartDeleteMasterPlayerExample(Action<PlayFabError> callback)
{
var task = await PlayFabAdminAPI.DeleteMasterPlayerAccountAsync(new DeleteMasterPlayerAccountRequest()
{
PlayFabId = PlayFabId
});
if(task.Error != null)
{
callback(task.Error);
}
var jobReceiptId = task.Result.JobReceiptId;
var AffectedTitleList = task.Result.TitleIds;
foreach (var title in AffectedTitleList)
{
Console.WriteLine(string.Format("Delete Player - Title Affected: {0}", title));
}
}
Hinweis
Da dieser Löschvorgang nicht rückgängig gemachtwerden kann, empfehlen wir, mit dem Spieler zu bestätigen, dass er mit dem Umfang und der Auswirkung seiner Löschanforderung gut aus sind.
Nachdem die Aktion bestätigt wurde, ... Zurück zum Pseudocode
//Make sure we are 100% sure we want to do this.
if ( confirm successful ) {
//create a variable to store a list of titles the player has already been removed from.
listOfTitlesRemovedFrom
//Hang on to the receipts from successful deletes.
listOfReceipts
foreach(title in <all my titles>){
//You only need to remove the Master Player once per namespace, so check that you have not
//already performed this action in the namespace, or you will get an error that
//the player is already queued for deletion.
if(title not in listOfTitlesRemovedFrom){
foreach(pfid in PlayFabIdList){
//Note: you should do some error handling around this API call.
response = title.DeleteMasterPlayerAccount(pfid)
foreach(titleId in response.titleids){
listOfTitlesRemoved.add(titleId)
}
listOfReceipts.add(response.jobreceiptid)
}
}
}
//Save listOfReceipts somewhere as proof of deletion.
}
Exportieren von Master Player-Kontodaten
Wenn Sie eine Anforderung zum Exportieren der Daten eines Spielers stellen, wird die Anforderung an einen Warteschlangenverarbeitungs-Agent gesendet (ähnlich dem Löschen eines Spielers).
Die ExportMasterPlayerData
API exportiert alle mit dem angegebenen verknüpften Daten, einschließlich Daten für alle PlayFabId
Titel, z. B.:
Statistiken
Benutzerdefinierte Daten
Inventar
Käufe
Virtuelle Währungsguthaben
Charakter
Gruppenmitgliedschaften
Verlegerdaten
Anmeldeinformationsdaten
Kontoverknüpfungen
Freundesliste
PlayStream-Ereignisverlauf .
Lesen Sie den ersten Abschnitt weiter oben, in dem Sie erfahren, wie Sie sicherstellen können, dass Sie über alle PlayFabIds eines Spielers verfügen.
Diese API gibt sofort ein zurück, das Sie für zukünftige Verweise JobReceiptId
in Ihren Datensätzen speichern sollten. Es kann einige Zeit dauern, bis der Export zum Download verfügbar ist.
Nach Abschluss des Exports wird eine E-Mail mit der URL zum Herunterladen des Exportabbilds an die für den Titel konfigurierte Benachrichtigungs-E-Mail-Adresse gesendet.
Durch den Abschluss der Aufgabe wird auch ein PlayStream-Ereignis ausgelöst. Mit unserem Webhook-Feature können Sie sich registrieren, um diese Ereignisse nach Bedarf an einem Endpunkt Ihrer Wahl zu empfangen. Das -Ereignis enthält ein JSON-BLOB mit Informationen wie der JobReceiptId und der Download-URL für die exportierten Daten.
Im folgenden Beispiel wird die Verwendung der Admin-API mit dem C# SDK beschrieben. Wenn Sie ein anderes SDK verwenden möchten, wählen Sie ein SDK aus der Liste der PlayFab-SDKs aus.
public static async void ExportMasterPlayerExample(Action<PlayFabError> callback)
{
var task = await PlayFabAdminAPI.ExportMasterPlayerDataAsync(new ExportMasterPlayerDataRequest()
{
PlayFabId = PlayFabId
});
if(task.Error != null)
{
callback(task.Error);
}
var jobReceiptId = task.Result.JobReceiptId;
Console.WriteLine(string.Format("Export Player Request Received - Receipt: {0}", jobReceiptId));
callback(null);
}
Hinweis
Die URL steht bis zu 30 Tage nach Abschluss des Exports zur Verfügung. Nach diesem Zeitpunkt wird die Datei gelöscht, und Sie müssen eine neue Exportanforderung starten.
Weitere Überlegungen
Diese APIs können leicht Schaden anrichten. Das Exportieren von Daten für den oder das Löschen des falschen Spielers kann sehr schädlich sein und ist dauerhaft!
Es liegt in Ihrer Verantwortung als Spielentwickler zu überprüfen, ob die Anmeldeinformationen im Besitz des Spielers sind, der einen Export oder eine Löschung seiner Spielerdaten anfordert. PlayFab bietet keine Überprüfungsart bei Verwendung dieser APIs.
PlayFab bietet jedoch eine Funktion zur E-Mail-Überprüfung. Aber unsere Lösung ist nicht die einzige Option zur Überprüfung. Sie können auch einen eigenen Prozess erstellen.
Unabhängig davon, welche Technologie Sie verwenden, empfehlen wir, dass Sie eine Überprüfung durchführen, bevor Sie eine dieser Aktionen ausführen.
Sind wir noch fertig?
Sie sollten eine E-Mail erhalten, wenn Ihre Anforderung abgeschlossen ist. Wenn sie aus bestimmten Gründen nie ankommt (weil dies manchmal in unserer digitalen Welt der Fall ist), wenden Sie sich unter privacy@playfab.com-Mail an uns, und fordern Sie eine Überprüfung an.
Geben Sie die in dieser E-Mail an, und wir werden Ihnen antworten, um Sie über den JobReceiptId
Status dieser Aufgabe zu informieren.
Feedback
Feedback senden und anzeigen für