Asset-IDs und Zugriffsschlüssel abrufen

Nachdem der*die Nutzer*in die Facebook Business Extension installiert hat und du seinen*ihren Nutzer-Zugriffsschlüssel hast (der für API-Aufrufe für den Benutzer verwendet wird), musst du die Pixel-ID, Instagram Business-ID, Seiten-ID, Business Manager-ID, Werbekonto-ID, Katalog-ID (optional) oder den Zugriffsschlüssel von dem*der Nutzer*in abrufen, um die entsprechenden Features zu konfigurieren. Diese IDs werden für API-Endpunkte und Unternehmenskonfigurationen verwendet.

Mit der OBO-Lösung kann der Kunde den Zugriffsschlüssel abrufen, indem er auch den Zugriffsschlüssel des Admin-Systemnutzers des Business Managers des Partners verwendet, anstatt nur den des Administrators des Business Managers des Kunden.

IDs für API-Endpunkte und Unternehmenskonfigurationen sammeln

So gelangst du an diese Informationen:

Erstellung des Systemnutzers

Nachdem ein*e Nutzer*in FBE installiert hat, generiert die Erweiterung im Business Manager des Kunden einen Systemnutzer für Mitarbeiter*innen. Die Benennung dieses neuen Systemnutzers erfolgt nach folgendem Schema: {App Name} System User (FBE).

Systemnutzer stellen Server oder Software dar, die API-Aufrufe an Assets durchführen, die im Besitz eines Business Managers sind oder von diesem verwaltet werden.

Dieser Systemnutzer hat Berechtigungen für alle zugewiesenen FBE-Assets mit den folgenden Aufgabenberechtigungen:

  1. Seite: 'MANAGE'
  2. Werbekonto: 'MANAGE'
  3. Katalog: 'MANAGE'
  4. Pixel: 'EDIT'

Zugriffsschlüssel für Systemnutzer mit der API abrufen

Wenn du einen Zugriffsschlüssel für Nutzer*innen über einen Webhook oder den Unternehmens-Login nach einer FBE-Installation erhältst, kannst du denselben Zugriffsschlüssel verwenden, um den Systemnutzer-Zugriffsschlüssel des Business Managers abzurufen. Tätige hierfür den folgenden API-Aufruf:

curl -X POST \
  -F 'app_id={app_id}' \
  -F 'scope={permissions}' \ 
  -F 'access_token={access_token}' \
  -F 'fbe_external_business_id={fbe_external_business_id}' \
  https://graph.facebook.com/<API_VERSION>/<client_business_manager_id>/access_token

Verwende für das Feld scope die Berechtigung manage_business_extension. Je nach Anwendungsfall benötigst du möglicherweise auch ads_management oder catalog_management.

Für das Feld access_token kannst du einen Nutzer-Zugriffsschlüssel (user_access_token) oder den Zugriffsschlüssel des Admin-Systemnutzers im Business Manager des Partners (partner_bm_admin_system_user_token) übergeben. Erfahre mehr über Zugriffsschlüssel für Unternehmen.

Das Feld token_type aus dem Webhook gibt an, ob der erhaltene access_token ein Nutzer-Zugriffsschlüssel oder ein Systemnutzer-Zugriffsschlüssel ist.

Wenn der*die Nutzer*in FBE über Instagram installiert, gibt der Webhook das Token des Systemnutzers zurück, das im Business Manager des Kunden generiert wurde, sodass du diese API nicht aufrufen musst.

Webhook

Um aktualisierte Eingabeaufforderungen zu Installationen, Deinstallationen und Neukonfigurationen von FBE zu erhalten, lösen wir jedes Mal Webhook-Events aus, wenn eines deiner Unternehmen FBE installiert, ändert oder deinstalliert.

Jedes Mal, wenn ein*eine Nutzer*in FBE installiert oder ändert, sollte deine App die Webhook-Konfiguration überprüfen, um zu verstehen, welche Assets der*die Nutzer*in geändert, hinzugefügt oder aus der Verbindung mit deiner App entfernt hat. Das Verhalten deiner App sollte auf der Grundlage der aktuell verbundenen Assets aktualisiert werden.

Setup-Anforderungen

  1. Erstelle einen Endpunkt auf einem sicheren Server, der Anfragen von Facebook verarbeiten kann. Verifizierungsanfragen (GET) und Event-Benachrichtigungen (POST).
  2. Konfiguriere das FBE-Webhooks-Abonnement im App-Dashboard:
    • Gehe im Abschnitt Facebook Business Extension des App-Dashboards zum Tab Setup, scrolle nach unten zur Karte Webhooks und klicke dann auf Edit Callback URL (Rückruf-URL bearbeiten).
    • Gib die URL deines Endpunkts im Feld Rückruf-URL und im Feld Verify Token (Token verifizieren) einen String ein. Wir schließen diesen String in alle Verifizierungsanfragen ein.
    • Wenn du auf Bestätigen und speichern klickst, senden wir an deinen Endpunkt eine Verifizierungsanfrage, die du validieren musst.
    • Der fbe_install-Webhook wird automatisch abonniert. Die Karte verfügt außerdem über einen Umschalter, mit dem das Abonnement im Bedarfsfall deaktiviert werden kann.

Analysieren von Webhook-Events

Jedes Mal, wenn ein Installations-Webhook empfangen wird, muss deine Anwendung die folgenden Aktionen durchführen.

Bei Neuinstallationen

  1. Speichere den Zugriffsschlüssel und seinen Typ und protokolliere die Assets, auf die deine App Zugriff erhalten hat.
  2. Aktiviere auf Basis der gewährten Assets den Satz von Funktionen.
  3. Wenn ein für eine bestimmte Funktion erforderliches Asset fehlt, deaktiviere nur diese Funktion. Wenn deine App beispielsweise Zugriff auf einen Katalog, aber nicht auf ein Pixel erhalten hat, implementiere nur die kataloggesteuerte Funktion, nicht die pixelgesteuerte Funktion.
  4. Informiere den*die Nutzer*in durch ein Update, wie sich deine App basierend auf den Assets verhält, auf die er*sie Zugriff hat.

Bei bestehenden Installationen

  1. Aktualisiere den Zugriffsschlüssel, seinen Typ und deine Aufzeichnung der Assets, auf die deine App Zugriff erhalten hat.
  2. Aktualisiere den Satz von Funktionen, die deine App für dieses Unternehmen implementiert, basierend auf den gewährten Assets.
  3. Informiere den*die Nutzer*in durch ein Update, wie sich deine App basierend auf den Assets verhält, auf die er*sie Zugriff hat.

Analysieren des Webhooks bei der Deinstallation

Führe die folgenden Schritte bei der Deinstallation aus:

  1. Deaktiviere Funktionen, die deine App für dieses Unternehmen implementiert.
  2. Informiere das Unternehmen über die Änderung an seiner Konfiguration.

Im Webhook-Payload ist Folgendes enthalten

Antwortfelder

FeldBeschreibung
ad_account_id

Typ: String

Die von dem Benutzer in der FBE ausgewählte Anzeigenkoto-ID. Mit diesem Werbekonto kannst du Werbeanzeigen verwalten, wenn deine App über ads_management-Berechtigungen verfügt. Siehe die verknüpften Assets der installed_features-Liste.

business_manager_id

Typ: String

Die für die FBE verwendete Business Manager-ID. Siehe die verknüpften Assets der installed_features-Liste.

catalog_id

Typ: String

Die von dem Nutzer in der FBE ausgewählte Katalog-ID. Diese ID kann von Nutzern zum Verwalten ihres Produktkatalogs verwendet werden. Siehe die verknüpften Assets der installed_features-Liste.

fbe_event

Typ: String

FBE-Event, das angibt, ob die Event-Benachrichtigung eine Installation oder eine Deinstallation ist. Siehe die verknüpften Assets der installed_features-Liste.

flow

Typ: String

Ablauf, der angibt, mit welchem Ablauf ein*e Nutzer*in das Onboarding durchgeführt hat (z. B. COMMERCE, CREATIVE usw). Siehe die verknüpften Assets der installed_features-Liste.

commerce_merchant_settings_id

Typ: String

ID der Commerce-Händler-Einstellungen, die verwendet wurden, um Partnern das Lesen von Informationen in Bezug auf die ausgewählten Commerce-Händler-Einstellungen der FBE zu ermöglichen. Siehe die verknüpften Assets der installed_features-Liste.

onsite_eligible

Typ: Boolescher Wert

Berechtigung für den Handel auf der Seite. Gibt an, ob die ausgewählten Assets für Handel auf der Seite berechtigt sind. Der Händler muss weiterhin Onsite-Absichten haben und Rücksendungen/Versand/Zahlungen auf der Partner-Webseite auswählen. Siehe die verknüpften Assets der installed_features-Liste.

profiles

Typ: Array

Liste mit Profilen (eine Facebook-Seiten-ID und/oder eine Instagram Business-Profil-ID). Erstelle mit diesen IDs eigene Graph API-Anfragen für andere Facebook-Integrationen, die du möglicherweise hast. Siehe die verknüpften Assets der installed_features-Liste.

pages

Typ: Array

Liste mit Facebook-Seiten-IDs. Erstelle mit diesen IDs eigene Graph API-Anfragen für andere Facebook-Seitenintegrationen, die du möglicherweise hast. Siehe die verknüpften Assets der installed_features-Liste.

instagram_profiles

Typ: Array

Liste mit Instagram Business-Profil-IDs. Erstelle mit diesen IDs eigene Graph API-Anfragen für andere Facebook/Instagram-Integrationen, die du möglicherweise hast. Wenn dieses Feld nicht enthalten ist, bedeutet dies, dass der Umfang nur auf Instagram bezogen ist. Beispiel: instagram_basic ist nicht im Zugriffsschlüssel enthalten und/oder das Unternehmen hat kein Instagram Business-Profil mit der FBE verbunden. Siehe die verknüpften Assets der installed_features-Liste.

pixel_id

Typ: String

Individuelle Pixel-ID für dieses Unternehmen, die du speichern und zum Auslösen von Pixel-Events verwenden solltest. Siehe die verknüpften Assets der installed_features-Liste.

token_type

Typ: String

Zugriffsschlüsseltyp. Gibt an, ob das empfangene access_token ein standardmäßiger Nutzer*innen-Zugriffsschlüssel oder ein Systemnutzer-Zugriffsschlüssel ist.

installed_features

Typ: Array

Liste der Features, die diese Unternehmen während des Onboardingprozesses integriert/installiert hat. Siehe die aktuelle Feature-Liste.

feature_instance_id

Typ: Array

ID, die jedes installierte Feature eindeutig darstellt. Kann künftig verwendet werden, um eine bestimmte Instanz zu bearbeiten oder zu deinstallieren. Sie ist dieselbe feature_instance_id, die auch in der Feature Configuration API und im Webhook angegeben ist.

feature_type

Typ: String

Typ des installierten Features. Die Tabelle Feature-Liste enthält alle verfügbaren Features. Du musst nur die Features nachverfolgen, die du aktiviert hast.

connected_assets

Typ: Array

Liste der für jedes Feature unterschiedlichen und relevanten Assets. Die Asset-Beschreibungen entsprechen denen, die am Anfang dieser Tabelle genannt werden.

additional_info

Typ: Array

Zusätzliche Informationen über das verknüpfte Feature.


Wenn du ein Webhook-Event für eine Neuinstallation erhältst, musst du Folgendes tun: 1) die Zuordnung der business_id mit ihrer pixel_id aufrechterhalten, da die Pixel-ID für dieses Unternehmen einzigartig ist und zum Auslösen von Standard-Pixel-Events verwendet werden soll, und 2) den Bestand für dieses Unternehmen mit einer der Katalog-PUSH-APIs aktualisieren, sofern sie aktiviert sind.


Beispiel: Payload mit booleschem onsite_commerce_eligible-Feld

{
  "data": [{
    "ad_account_id": "<ad_account_id>",
    "business_manager_id": "<business_manager_id>",
    "catalog_id": "<catalog_id>",
    "commerce_merchant_settings_id": "<commerce_merchant_settings_id>",
    "onsite_eligible": true,
    "profiles": [
      "<page_id>",
      "<instagram_profile_id>"
    ],
    "pages": [
      "<page_id>"
    ],
    "instagram_profiles": [
      "<instagram_profile_id>"
    ],
    "pixel_id": "<pixel_id>",
    "token_type": "<token_type>",
    "installed_features": [
        {
            "feature_instance_id": "<unique_id>",
            "feature_name" : string, 
            "feature_type": enum,
            "connected_assets": {
                "ad_account_id": "<ad_account_id>",
                "business_manager_id": "<business_manager_id>",
                "catalog_id": "<catalog_id>",
                "commerce_merchant_settings_id": "<commerce_merchant_settings_id>",
                "ig_profile_id": "<instagram_profile_id>"               
                "page_id": "<page_id>",
                "pixel_id": "<pixel_id>",
            },
            "additional_info": {
                            "onsite_commerce_eligible": bool
                        },
                        {
                        "shop_status": array
                        },
                        {
                        "shop_status_info": array
                        }
                }
         ]
    }]
}

FBE Installation API

Für alle Unternehmen mit installierter FBE kannst du grundlegende Installationsinformationen abfragen (pixel_id und eine Liste mit Profilen mit einer IG Business ID and/or Page ID) mit dem folgenden Endpunkt:

Beispiel

CURL -X GET 'https://graph.facebook.com/<API_VERSION>/fbe_business/fbe_installs?fbe_external_business_id=<fbe_external_business_id>&access_token=<access_token>'

Antwort

{
  "data": [{
    "token_type": "<token_type>"
    "installed_features": [
        {
            "feature_instance_id": "<unique_id>",
            “feature_name” : string, 
            "feature_type": enum,
            "connected_assets": {
                “ad_account_id”: "<ad_account_id>",
                “business_manager_id”: "<business_manager_id>",
                “catalog_id”: "<catalog_id>",
                “commerce_merchant_settings_id”: "<commerce_merchant_settings_id>",
                “ig_profile_id”: "<instagram_profile_id>"               
                "page_id": "<page_id>",
                "pixel_id": "<pixel_id>",
            },
            "additional_info": {
                            "onsite_commerce_eligible": bool
                        },
                        {
                        "shop_status": array
                        },
                        {
                        "shop_status_info": array
                        }
                }
         ]
    }]
}

Die Antwort enthält die folgenden Felder. Diese stellen nun die zentrale Informationsquelle in der Liste „installed_features“ der verbundenen Assets dar:

FeldBeschreibung

token_type

Typ: String

Token-Typ, der angibt, ob der empfangene access_token ein standardmäßiger Nutzer-Zugriffsschlüssel oder ein Systemnutzer-Zugriffsschlüssel ist.

installed_features

Typ: Array

Liste der Features, die diese Unternehmen während des Onboarding-Prozesses integriert oder installiert hat.

feature_instance_id

Typ: String

Eindeutige ID, die jedes installierte Feature eindeutig darstellt. Kann künftig verwendet werden, um eine bestimmte Instanz zu bearbeiten oder zu deinstallieren. Sie ist dieselbe feature_instance_id, die auch in der Feature Configuration API und im Webhook angegeben ist.

feature_name

Typ: String

Name der eindeutigen Funktion.

feature_type

Typ: String

Typ des installierten Features. Du musst nur die Features nachverfolgen, die du aktiviert hast.

connected_assets

Typ: Array

Liste der für jedes Feature relevanten Assets.

additional_info

Typ: String

Weitere Informationen über das verknüpfte Feature, einschließlich shop_status und shop_status_info, die angeben, ob ein Shop von bevorstehenden Änderungen betroffen ist. shop_status-Werte können „"inactive_other“, „inactive_offsite“, „active“ oder „no_longer_available“ sein.

„Active“ bedeutet, dass der Shop sichtbar ist. „Inactive_offsite“ bedeutet, dass der Shop nicht sichtbar ist, da er keinen Onsite-Checkout verwendet. „Inactive_other“ bedeutet, dass der Shop nicht sichtbar ist, wobei der Grund dafür nicht mit der Art des Checkouts zusammenhängt. „No_longer_available“ bedeutet, dass der Shop nicht in den USA ansässig ist und sich in keinem Schlüsselmarkt befindet und nicht mehr verfügbar ist.

Feature Configuration API-Antwort


Das Modell enthält die ID der Feature-Instanz für jedes Feature und neue Felder, die aus einem Array aller Features desselben Typs bestehen, die das Unternehmen installiert hat (z. B. mehrere Seiten-CATs).

Für nicht anpassbare Features wird nur eine Feature-Instanz-ID und die Kennzeichnung „Aktiviert“ angezeigt. Du kannst nur die anpassbaren Features mit einer POST-Anfrage aktualisieren.

Dieses Modell unterscheidet sich von der FBE Installation API, da es zusätzliche Feature-Informationen bereitstellt, die über die verknüpften Assets hinausgehen und auch den Status „Aktiviert“ sowie bestimmte Feature-Anpassungen umfassen. Nachdem du die FBE Installation API aufgerufen hast, verwende diese API, wenn weitere Informationen über den Status „Aktiviert“ oder die Konfigurationen des Features erforderlich sind.

Lesen

Du kannst den aktuellen Feature-Konfigurationsstatus jedes Unternehmens lesen, indem du die folgende Anfrage stellst:

CURL -X GET 
'https://graph.facebook.com/<API_VERSION>/fbe_business/?fbe_external_business_id=<fbe_external_business_id>&access_token=<access_token>'

Aktualisieren

Um alle Features zu aktualisieren, stelle die folgende POST-Anfrage:

CURL -i -X POST \   
  -F 'fbe_external_business_id=<fbe_external_business_id>' \
  -F 'business_config={business_config object}' \
  -F 'access_token=<access_token>' 
  "https://graph.facebook.com/<API_VERSION>/fbe_business"

Antwort

{
  "page_cta": {
     "feature_instance_id": id1,
     "enabled": true,
     "cta_button_text": "Book Now",
     "cta_button_url": "https://partner-site.com/foo-business1",
     "below_button_text": "Powered by FBE Partner"
  },
  "page_ctas": [
    {
        "feature_instance_id": id1,
        "enabled": true,
        "cta_button_text": "Book Now",
        "cta_button_url": "https://partner-site.com/foo-business1",
        "below_button_text": "Powered by FBE Partner"
    },
    {
        "feature_instance_id": id2,
        "enabled": true,
        "cta_button_text": "Book Now",
        "cta_button_url": "https://partner-site.com/foo-business2",
        "below_button_text": "Powered by FBE Partner"
    }
  ],
  “ig_cta”: {...}
  "ig_ctas": [{...}, {...}],
  “ads”: [
    {
      "feature_instance_id": id3,
      “enabled”: true,
    },
    {
      "feature_instance_id": id4,
      “enabled”: true,
    },
  ],
  ...
}