Ein Systemnutzer steht für Serveraufrufe. Daher hat er keinen Facebook Login und kann keine App installieren oder den standardmäßigen Facebook-OAuth-Vorgang zum Generieren eines Zugriffstokens durchführen. Du musst hierfür API-Aufrufe verwenden.
| Typen | Zugriffstokens ohne Ablauf | Empfohlene Zugriffstokens mit Ablauf |
|---|---|---|
Laufzeit | Läuft nie ab | 60 Tage gültig |
Aktualisierung erforderlich? | Nein | Ja |
Empfehlung anhand von Anwendungsfällen | Du kannst das Risiko von gestohlenen Zugriffstokens in Kauf nehmen und möchtest, dass deine Drittanbieteranwendungen offline auf Daten zugreifen können. | Du möchtest das Risiko gestohlener Zugriffstokens begrenzen. |
Ein Systemnutzer oder ein Systemnutzer mit Admin-Rechten muss die App installieren, die zum Generieren eines Zugriffstokens verwendet wird. Das bedeutet, dass der App erlaubt werden muss, APIs im Namen dieses Systemnutzers oder des Systemnutzers mit Administratorrechten aufzurufen.
Der Systemnutzer und die App sollten zum gleichen Business Manager gehören. Als Mindestanforderung für das Installieren von Apps ist Standardzugriff auf die Ads Management API erforderlich.
Voraussetzung für das Installieren einer App für einen Systemnutzer:
access_token: eines*einer Admin, eines Systemnutzers mit Adminrechten oder eines anderen Systemnutzersbusiness_app: ID der zu installierenden AppStelle eine POST-Anfrage, um eine App für einen Systemnutzer zu installieren:
curl \ -F "business_app=APP-ID" \ -F "access_token=ACCESS-TOKEN" \ "https://graph.facebook.com/API-VERSION/SYSTEM-USER-ID/applications"
Dieser Aufruf gibt ein boolesches Ergebnis zurück, wenn die Installation erfolgreich ist. Wenn eine dieser Einschränkungen nicht erfüllt ist, wird eine entsprechende Fehlermeldung angezeigt.
Nachdem der Systemnutzer die App installiert hat, kann diese ein dauerhaftes Zugriffstoken generieren. Es gelten einige Einschränkungen:
Parameter für den API-Aufruf:
business_app: die App, die sich im Besitz des Business Managers befindet, zu dem der Systemnutzer gehört.appsecret_proof: berechnetes Feld für die App. Dies ist erforderlich, um sicherzustellen, dass der richtige Server den API-Aufruf durchführt. Weitere Details findest du unter Login-Sicherheit.scope: kommagetrennter String mit erweiterten Berechtigungen.access_token: Zugriffstoken im Besitz des Business Manager-Admins, Systemnutzers mit Administratorrechten oder regulären Systemnutzers.set_token_expires_in_60_days: Auf true festgelegt, um ein Systemnutzer-Zugriffstoken mit Ablauf zu generieren. Empfohlen. Token mit Ablaufdatum sind eine Best Practice zu Sicherheitszwecken. Einige Unternehmen müssen Token verwenden, die ablaufen. Wenn dies für dein Unternehmen gilt, führt das Auslassen dieses Parameters oder das Festlegen auf false zu einem Fehler. Für alle Integrationen sollten ablaufende Token verwendet werden, um auf zukünftige Sicherheitsstandards der Plattform ausgerichtet zu sein.Unterstützter Umfang für Systemnutzer:
ads_managementads_readattribution_readbusiness_managementcatalog_managementcommerce_account_manage_orderscommerce_account_read_orderscommerce_account_read_settingsinstagram_basicinstagram_branded_content_ads_brandinstagram_branded_content_brandinstagram_content_publishinstagram_manage_commentsinstagram_manage_insightsinstagram_manage_messagesinstagram_shopping_tag_productsleads_retrievalpage_eventspages_manage_adspages_manage_ctapages_manage_engagementpages_manage_instant_articlespages_manage_metadatapages_manage_postspages_messagingpages_read_engagementpages_read_user_contentpages_show_listprivate_computation_accesspublish_videoread_audience_network_insightsread_insightsread_page_mailboxeswhatsapp_business_managementwhatsapp_business_messagingVeraltete Berechtigung, nur sichtbar für Apps, die vor dem 24. April 2018 erstellt wurden
publish_actions
Nach Funktionen beschränkte Berechtigungen
| Funktion | Berechtigung |
|---|---|
business_creative_management |
|
commerce_public_api_beta_testing |
|
Zum Generieren des appsecret_proof kannst du PHP-Code verwenden:
$appsecret_proof = hash_hmac( 'sha256', $access_token_used_in_the_call, $app_secret_for_the_app_used_in_the_call, );
Im Code-Beispiel oben verweist app_secret_for_the_app_used_in_the_call auf den App-Geheimcode für die App, die zum Generieren des Zugriffstokens verwendet wurde. Du findest den App-Geheimcode in deinem App-Dashboard.
Der gehashte appsecret_proof sollte ein String wie der folgende sein: "1734d0d1e1ca62c9762c10bbc7321fdf89ecc7d819312b2f3".
Stelle zum Generieren eines Systemnutzer-Zugriffstokens ohne Ablauf eine POST-Anfrage:
curl \ -F "business_app=<APP_ID>" \ -F "scope=ads_management,pages_read_engagement,pages_show_list" \ -F "appsecret_proof=APPSECRET-PROOF" \ -F "access_token=ACCESS-TOKEN" \ "https://graph.facebook.com/API-VERSION/SYSTEM-USER-ID/access_tokens"
Stelle zum Generieren eines Systemnutzer-Zugriffstokens mit Ablauf eine POST-Anfrage:
curl \ -F "business_app=<APP_ID>" \ -F "scope=ads_management,pages_read_engagement,pages_show_list" \ -F "set_token_expires_in_60_days=true" \ -F "appsecret_proof=APPSECRET-PROOF" \ -F "access_token=ACCESS-TOKEN" \ "https://graph.facebook.com/API-VERSION/SYSTEM-USER-ID/access_tokens"
Der Endpunkt hieß vorher /SYSTEM-USER-ID/ads_access_token. Aufrufe dieses Namens funktionieren nicht mehr.
Die Antwort gibt den Zugriffstoken-String zurück. Sollte eine der Einschränkungen nicht erfüllt werden, werden entsprechende Fehlermeldungen ausgegeben. Antwort:
{
"access_token": "CAAB3rQQzTFABANaYYCmOuLhbC]Fu8cAnmkcvT0ZBIDNm1d1fSp4Eg4XA79gmYumZCoSuiMSUILUjzG3y15BJlrYwXdqwd5c7y3lOUzu6aT7MkXL6HpISksSuLP4aFKWPmwb6iOgGeugRSn766xMZCN72vTiGGLUNqC2MKRL"
}Du kannst auch über die Business Manager-Benutzungsoberfläche ein Systemnutzer-Zugriffstoken generieren.
Ein Systemnutzer-Zugriffstoken ist ab dem Generierungs- oder Aktualisierungsdatum 60 Tage lang gültig. Um Kontinuität zu schaffen, sollte der*die Entwickler*in das Zugriffstoken innerhalb von 60 Tagen aktualisieren. Andernfalls verfällt das Zugriffstoken und der*die Entwickler*in muss ein neues abrufen, um wieder API-Zugriff zu erhalten.
Um ein ablaufendes Systemnutzer-Zugriffstoken zu aktualisieren, benötigst du Folgendes:
fb_exchange_token: Ein gültiges Systemnutzer-Zugriffstokenclient_id: App-IDclient_secret: App-Geheimcodeset_token_expires_in_60_days: Auf „true“ festgelegt, um ein Systemnutzer-Zugriffstoken mit Ablauf zu aktualisieren.Frage den „GET oauth/access_token“-Endpunkt ab.
Beispielanfrage
curl -i -X GET
"https://graph.facebook.com/{graph-api-version}/oauth/access_token?
grant_type=fb_exchange_token&
client_id={app-id}&
client_secret={app-secret}&
set_token_expires_in_60_days=true&
fb_exchange_token={your-access-token}"Beispielantwort
{
"access_token":"{expiring-system-user-access-token}",
"token_type": "bearer",
"expires_in": 5183944 // Time left in seconds until the token expires
}Dieser Endpunkt ist für die regelmäßige Token-Rotation oder das Widerrufen von Zugriffstokens für kompromittierte Systemnutzer ausgelegt, um dein System zu schützen.
Um ein Systemnutzer-Zugriffstoken zu widerrufen, benötigst du Folgendes:
revoke_token: Das zu widerrufende Zugriffstoken
client_id: App-ID
client_secret: App-Geheimcode
access_token: Zugriffstoken zum Identifizieren des*der Aufrufer*in
Dies sind die Anforderungen:
Die client_id muss mit der tatsächlichen App übereinstimmen und du musst sicherstellen, dass die App nicht gedrosselt, deaktiviert oder gelöscht ist.
client_id zusammen mit der installierten App von revoke_token, der installierten App von access_token und client_secret müssen alle gleich sein.
Frage den „GET oauth/revoke“-Endpunkt ab.
Beispielanfrage
curl -i -X GET "https://graph.facebook.com/{graph-api-version}/oauth/revoke?
client_id={app-id}&
client_secret={app-secret}&
revoke_token={system-user-access-token-to-revoke}&
access_token={your-access-token}"Beispielantwort
{
"success":"true",
}Die Token-Rotation ist eine Sicherheitsmaßnahme, die Risiken verringern kann, z. B. den Schaden durch geleakte Tokens. Durch regelmäßiges Ändern von Zugriffstokens kann der potenzielle Schaden, der durch ein gestohlenes oder abhanden gekommenes Token verursacht wird, begrenzt werden, ähnlich wie bei der Passwortänderung. Aktuell unterstützt unser System die Rotation von Systemnutzern ohne Ausfallzeit. Das geht so:
Aktualisiere das Systemnutzer-Zugriffstoken über die Refresh API. Diese gibt ein neues Systemnutzer-Zugriffstoken zurück, das ab dem Aktualisierungsdatum 60 Tage lang gültig ist. Das alte Zugriffstoken funktioniert weiterhin bis zu seinem Ablauf (d. h. Erstellungsdatum + 60).
Stelle das neue Systemnutzer-Zugriffstoken bereit.
Widerrufe das alte Systemnutzer-Zugriffstoken über die Revocation API. Das Token wird sofort ungültig und kann nach dem Widerrufen nicht mehr verwendet werden.