Erste Schritte mit den Batch-Compliance-endpoints
Die Arbeit mit den Batch-Compliance-endpoints umfasst in der Regel fünf Schritte:
- Erstellen eines Compliance-Jobs
- Vorbereiten der Liste von Post-IDs oder Benutzer-IDs
- Hochladen der Liste von Post-IDs oder Benutzer-IDs
- Überprüfen des Status des Compliance-Jobs
- Herunterladen der Ergebnisse
In diesem Abschnitt zeigen wir, wie Sie jeden dieser Schritte über die Befehlszeile ausführen. Wenn Sie Beispielcode in verschiedenen Programmiersprachen ansehen möchten, besuchen Sie bitte unser X API v2 sample code GitHub repository.
Um diese Anleitung abzuschließen, benötigen Sie eine Reihe von Keys und Tokens, um Ihre Anfrage zu authentifizieren. Sie können diese Keys und Tokens generieren, indem Sie die folgenden Schritte ausführen:
- Registrieren Sie sich für ein Developer-Konto und lassen Sie es genehmigen.
- Erstellen Sie ein Project und eine zugehörige Developer-App im Entwicklerportal.
- Navigieren Sie zur Seite „Keys und Tokens“ Ihrer App, um die erforderlichen Anmeldedaten zu generieren. Stellen Sie sicher, dass Sie alle Anmeldedaten an einem sicheren Ort aufbewahren.
Schritt eins: Erstellen Sie einen Compliance-Job
Zuerst müssen Sie einen Compliance-Job erstellen und angeben, ob Sie Post-IDs oder Benutzer-IDs hochladen (mithilfe des Parameters type). Optional können Sie Ihrem Job auch einen Namen zuweisen (mithilfe des Parameters name).
Um diese Anfrage zu autorisieren, müssen Sie App only verwenden. Ersetzen Sie dazu unten $APP_ACCESS_TOKEN durch Ihr App Access Token, das Sie in Ihrer X App im Entwicklerportal generieren können.
curl --request POST 'https://api.x.com/2/compliance/jobs' \ --header 'Authorization: Bearer $APP_ACCESS_TOKEN' \ --header 'Content-Type: application/json' \ --data-raw '{"type": "tweets"}'
Wenn Ihr API-Aufruf erfolgreich ist, erhalten Sie eine Antwort ähnlich der folgenden:
{
"data": {
"download_expires_at": "2021-08-18T19:42:55.000Z",
"status": "created",
"upload_url": "https://storage.googleapis.com/twttr-tweet-compliance/1425543269983784962/submission/1202726487847104512_1425543269983784962?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=complianceapi-public-svc-acct%40twttr-compliance-public-prod.iam.gserviceaccount.com%2F20210811%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20210811T194255Z&X-Goog-Expires=900&X-Goog-SignedHeaders=content-type%3Bhost&X-Goog-Signature=355e4c4739ae508304d3df15b4e13e64b6c7752d8d79d73676a4d8e60dc5241f83924ad2a1f8b7bddcc768062bb9c64d39b8e8f7cce7f66ffbea9f9ed33a4da975b3a2c127fb738c1c1ff3c3964bd4d9dc0706e6c8a70e67522160ea774e090d2793e06f890d1158ce86be3031c1c471b74f961b6f18743a28730611000336286ad0111b41fb5d14aa813ff00cf06b3572dc68d0b3c6fdc07f25c1b1196c1af4325a9ead68994944bbef0d2123585ea051deb9765aa7f5832446440bc9ba76af327b69df1fd7b1a99bd4419c128f1f697dbbacbc62bbc7c2c9aebc82a2128be0ed05d48a54d814162daad1232a0d13081e9543ab8557f567149af82281193f37",
"created_at": "2021-08-11T19:42:55.000Z",
"resumable": false,
"id": "1425543269983784962",
"type": "tweets",
"download_url": "https://storage.googleapis.com/twttr-tweet-compliance/1425543269983784962/delivery/1202726487847104512_1425543269983784962?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=complianceapi-public-svc-acct%40twttr-compliance-public-prod.iam.gserviceaccount.com%2F20210811%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20210811T194255Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=0a11dd5a3c5adb508f32ce904568abada863dc9499ba2adeafb3452ccee0dcb3dade17910dbc502dcbe54c130ac4d8638eb176c8b7344de068139b06c970794efa6312f0a5149f40da441eafcaf475f670c93ca73951999902a531d34dfab1e5490918929e5b06ae803b5604e0c0c26852255ccdbc79a2c1e2eefe924e5e6bf5b6603a7f287d1621333b9548ec6cc203716070528bebc2e67c12e92b1f4e54471db92c15a54799f2b855ae224250ca44c47993fd7d79a4940a0f68fe09f73fc8b291e88cfd10ade860b4b35c2b964d1777c1d93cd300c313138d9ca90aa8b3ecd3bf9dc73d3ebe32ba7634228fe07e1e4ecdda57cd94c802afc520162735d5a3",
"upload_expires_at": "2021-08-11T19:57:55.000Z"
}
}
Notieren Sie sich die Werte aus den Parametern upload_url, download_url und id; diese benötigen Sie in den folgenden Schritten.
Schritt zwei: Erstellen Sie eine Liste von Post-IDs oder Benutzer-IDs
Erstellen Sie eine Textdatei mit Post-IDs oder Benutzer-IDs, wobei jede Zeile eine Post-ID oder eine Benutzer-ID enthält. Der Inhalt der Textdatei kann etwa so aussehen:
1417856744319971329
1415457498803232770
1415348607813832708
1413515358766452738
…
…
Hinweis: Die oben genannte Datei kann entweder Post-IDs oder Benutzer-IDs enthalten und darf keine Mischung aus beiden sein.Sie können Ihre Datei direkt per PUT-Anfrage an diese URL hochladen. Beachten Sie, dass die URL bereits mit einem Authentifizierungs-Token signiert ist, was bedeutet, dass Sie Ihr App Access Token nicht erneut übermitteln müssen. Achten Sie darauf, einen Content-Type-Header mitzugeben, um anzuzeigen, dass Sie eine Textdatei hochladen, und ersetzen Sie unten $FILE_LOCATION durch den Pfad zu Ihrer Datei.
curl -X PUT \
-H "Content-Type: text/plain" \
--data-binary @$FILE_LOCATION \
"https://storage.googleapis.com/twitter-compliance/customer_test_object_123456_d8ske9.json?X-Goog-Algorithm=\nGOOG4-RSA-SHA256&X-Goog-Credential=example%40example-project.iam.gserviceaccount\n.com%2F20181026%2Fus-central-1%2Fstorage%2Fgoog4_request&X-Goog-Date=20181026T18\n1309Z&X-Goog-Expires=900&X-Goog-SignedHeaders=host&X-Goog-Signature=247a2aa45f16\n9edf4d187d54e7cc46e4731b1e6273242c4f4c39a1d2507a0e58706e25e3a85a7dbb891d62afa849\n6def8e260c1db863d9ace85ff0a184b894b117fe46d1225c82f2aa19efd52cf21d3e2022b3b868dc\nc1aca2741951ed5bf3bb25a34f5e9316a2841e8ff4c530b22ceaa1c5ce09c7cbb5732631510c2058\n0e61723f5594de3aea497f195456a2ff2bdd0d13bad47289d8611b6f9cfeef0c46c91a455b94e90a\n66924f722292d21e24d31dcfb38ce0c0f353ffa5a9756fc2a9f2b40bc2113206a81e324fc4fd6823\na29163fa845c8ae7eca1fcf6e5bb48b3200983c56c5ca81fffb151cca7402beddfc4a76b13344703\n2ea7abedc098d2eb14a7"
Der Statuscode 200 zeigt an, dass der Upload erfolgreich war.
Schritt drei (optional): Überprüfen Sie den Status Ihres Jobs
Große Uploads können einige Zeit dauern. Sie können über das content compliance job endpoint eine Statusabfrage durchführen, indem Sie die job id angeben, die Sie im ersten Schritt erhalten haben.
Stellen Sie erneut sicher, dass Sie unten APP_ACCESS_TOKEN durch Ihr App Access Token ersetzen und ID durch Ihre job id aus dem ersten Schritt.
curl --request GET 'https://api.x.com/2/compliance/jobs/$ID' \ --header 'Authorization: Bearer $APP_ACCESS_TOKEN'
Die Antwort enthält Informationen zum Job.
{
"data": {
"upload_expires_at": "2021-08-05T01:50:11.000Z",
"type": "tweets",
"resumable": false,
"download_url": "https://storage.googleapis.com/twttr-tweet-compliance/1423095206576984067/delivery/1202726487847104512_1423095206576984067?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=complianceapi-public-svc-acct%40twttr-compliance-public-prod.iam.gserviceaccount.com%2F20210805%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20210805T013511Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=09de4feae68a6d4449eb7ce1f8f3551996552e7fba103005b3bd50ab318bb5215e4f5396ef29d17755deb6bf172b9d1dab61a04b249d39e87f6e2dbb31632b7e5f2d35f4f534e1f1522c9d7958b8745dd62471deb8d6992c80fd418628404f5f14eda3f557adf709403058910ea009e0c88ce81458ec9b915016a5c5901e2365b130db00b18fcb7da1b082e1a5c75f7bf7eeab8783675d1b6a56441ac6e9ffc972b1278a5853d2b94dda55e1a6e2068bc0ddd3cddc9213ec9cebb7cb5be931977bb28dda12c7c5e69d1f876b243f0f224076bf1b81149603319a2fc9cb82337bdbe05e7bbf184bcbdc17d43b3f5efbae72ea386d955ca10e702e00df31aabf32",
"id": "1423095206576984067",
"status": "expired",
"created_at": "2021-08-05T01:35:11.000Z",
"upload_url": "https://storage.googleapis.com/twttr-tweet-compliance/1423095206576984067/submission/1202726487847104512_1423095206576984067?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=complianceapi-public-svc-acct%40twttr-compliance-public-prod.iam.gserviceaccount.com%2F20210805%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20210805T013511Z&X-Goog-Expires=900&X-Goog-SignedHeaders=content-type%3Bhost&X-Goog-Signature=ba08f588bea3873aa0465cf22015e583c2851a5ff14891d22430b1127288728f1aa303673e6895694e7017739871ff5ae59bbcde7d4ac7a14aaaafba98ad22ca818e99fb3ec7eaaf74b3ecfecbfb33711869b2e85d7666609276666ef4a8b396ae9616743a0cbd773962e5850f2942cd76be7373d608a140e041ca8492017d43fac9220fa145d0b2ecaf9f752d71fc8c4b81b67c5c22aa59ac87666f7d83714fdace72894d2911a3e36dd42028d0222e71054d6b28c8ef63d0f0000f228c8680bab9c8011b87d1a6c9a60e8cc9e8b6a83abf7c47a57772746c83b19849f5b4c938ccd0922990da5f2a81ff806edcb4667bb402fb1f1f6f5162768e0661648b21",
"download_expires_at": "2021-08-12T01:35:11.000Z"
}
}
Ein vollständiger Status bedeutet, dass die Ergebnisse zum Herunterladen bereitstehen. Hinweis: Die anderen Werte von statuses können created, complete, in_progress, failed und expired sein.
Schritt vier: Laden Sie die Ergebnisse herunter
Sobald Sie den Abschlussstatus eines Jobs erhalten, können Sie die Compliance-Ergebnisse über die im Feld download_url angegebene URL herunterladen (ebenfalls im ersten Schritt generiert). Diese URL ist bereits mit einem Authentifizierungs-Token signiert, sodass Sie sich nicht erneut authentifizieren müssen, indem Sie Ihr App Access Token übermitteln.
curl --request GET \
'https://storage.googleapis.com/twttr-tweet-compliance/1423047488781488129/delivery/1202726487847104512_1423047488781488129?X-Goog-Algorithm=GOOG4-RSA-SHA256&X-Goog-Credential=complianceapi-public-svc-acct%40twttr-compliance-public-prod.iam.gserviceaccount.com%2F20210804%2Fauto%2Fstorage%2Fgoog4_request&X-Goog-Date=20210804T222534Z&X-Goog-Expires=604800&X-Goog-SignedHeaders=host&X-Goog-Signature=8ed0fe9e9748f6be5e7e052f6635c8b5cbe62fb2d3a165278b922b28a48fb79b02d74f0bd31b4fdb32532bc6746c6082aaff2154cdab4b59c4c6561ff2c840e5f32dd13c09ff5b52376dfac1b7f97807c72209d2844a6c078b71fddf22a5493f88118802e98a60e16ce5715fce0242baddd17d4598d31be59393e1dacd22fc1eeb532572cc4e784402c5fbeb84a22dd308922e937a26fa99cb717bb26fb61b657403010121a996691814b7aeb00bc05ed25f15d394fd46899dd9390be6d5da44960e81d8018318c325c70b39d0a4fc9d65fea2b8b3355d4c7dd7c386eac1d9c09233462bde40fa3f4023d1cd6470b0346f9f36d74665dde3f716940312019703'
Das Ergebnis enthält eine Reihe von JSON-Objekten (ein Objekt pro Zeile). Jedes Objekt enthält eine Post- oder Benutzer-id, das Erstellungsdatum der Post oder des Benutzers (nützlich, um Posts nach Datum zu finden), die erforderliche Maßnahme, den Grund für die Compliance-Maßnahme und deren Datum:
{"id":"1265324480517361664","action":"delete","created_at":"2019-10-29T17:02:47.000Z","redacted_at":"2020-07-29T17:02:47.000Z","reason":"deleted"}
{"id":"1263926741774581761","action":"delete","created_at":"2019-10-29T17:02:47.000Z","redacted_at":"2020-07-29T17:02:47.000Z","reason":"protected"}
{"id":"1265324480517361669","action":"delete","created_at":"2019-10-29T17:02:47.000Z","redacted_at":"2020-07-29T17:02:47.000Z","reason":"suspended"}
Ihr Code kann jede JSON-Zeile analysieren, um die Post- oder Nutzer-id zu ermitteln, und die Posts bzw. Nutzer mit diesen ids aus Ihrem Datensatz entfernen, um die Compliance einzuhalten. Wenn es kein entsprechendes JSON-Objekt für eine von Ihnen hochgeladene id gibt, können Sie davon ausgehen, dass diese id compliant ist.
Hinweis: Nicht alle Compliance-Ereignisse enthalten das Feld redacted_at.