POST/api/v4/social/brands/{brandId}/connections/link

Einen Verbindungslink abrufen

Gibt eine kurzlebige, gehostete URL zurück, die einen Endnutzer durch die Verbindung einer sozialen Plattform mit einer Marke führt.

Erfordert einen API-Schlüssel. Format des Headers und Schlüsselrotation finden Sie unter Authentifizierung.

Parameter

Pfad

NameTypErforderlichBeschreibung
brandIdstringerforderlichBrand UUID the connection will be attached to.

Body

NameTypErforderlichBeschreibung
channelstringerforderlichPlatform to connect: `FACEBOOK`, `INSTAGRAM`, `TWITTER` (X), `LINKEDIN` or `PINTEREST`.
redirectUrlstringerforderlichAbsolute https URL in your application the user is returned to when the flow finishes. Must be a URL you control.
errorUrlstringoptionalAbsolute https URL the user is returned to if they cancel or the platform rejects the authorization. Defaults to `redirectUrl` when omitted.
statestringoptionalOpaque string echoed back on the return URL unchanged. Use it to correlate the return with the session that started the flow; it is not validated or interpreted.

Beispielanfrage

Body zum direkten Einfügen. Ersetzen Sie Platzhalter-IDs und -Werte durch Ihre eigenen.

Request body
{  "channel": "INSTAGRAM",  "redirectUrl": "https://app.example.com/social/connected",  "errorUrl": "https://app.example.com/social/connect-failed",  "state": "sess_9f2c1e64"}

Antworten

200Link generated. Redirect the end user to `url`; `expiresIn` is how many seconds it stays valid.
Response
{  "data": {    "connectSocialAccount": {      "status": "success",      "url": "https://social.listingsapi.com/connect/start?token=bfac8e06-8d72-4810-9c50-ae7ee12a7b52",      "title": null,      "token": null,      "expiresIn": 900    }  }}
200The link could not be issued. `status` is `failed` and `title` carries the reason: most often the account is at its connection cap (`SY95042`, counted on billable connections, so recent disconnects have not freed room) or the platform is not enabled for the account (`SY95044`).
Response
{  "data": {    "connectSocialAccount": {      "status": "failed",      "url": null,      "title": "SY95042: Connection limit reached for this account",      "token": null,      "expiresIn": null    }  }}
401Unauthenticated, missing or invalid API key.
404No brand with that ID on this account (`SY95043`).

Erstellt eine kurzlebige URL, die eine soziale Plattform mit einer Marke verbindet. Sie kommen nie mit den OAuth-Zugangsdaten der Plattform in Berührung: Leiten Sie Ihren Endnutzer zur zurückgegebenen url weiter; dort durchläuft er den Zustimmungsdialog der Plattform und wählt die Seite, Pinnwand oder Organisation aus, auf der veröffentlicht werden soll, und wird anschließend zu Ihrer redirectUrl zurückgeleitet.

Dies ist die einzige Social-Schreiboperation mit einem flachen Body. Jede andere Schreiboperation in der Social API ist in ein input-Objekt eingebettet; diese nicht. Senden Sie channel, redirectUrl und optional errorUrl und state auf der obersten Ebene.

Anwendungsfall: eigenständiges Verbinden von Kanälen innerhalb Ihres Produkts. Zeigen Sie dem Nutzer die fünf Plattformen an und rufen Sie nach seiner Auswahl diesen Endpunkt mit dem entsprechenden channel und einem state auf, der seine Sitzung identifiziert. Leiten Sie ihn zu url weiter. Wenn er mit status=success zu Ihrer redirectUrl zurückkehrt, fragen Sie GET /social/brands/{brandId}/connections wiederholt ab, bis der neue Kanal erscheint, und lassen Sie ihn dann mit POST /social/posts seinen ersten Beitrag verfassen.

Wohin der Nutzer zurückgeleitet wird

Wenn der Ablauf endet, wird der Nutzer mit angehängten Abfrageparametern zu Ihrer redirectUrl (oder errorUrl) weitergeleitet:

ParameterImmer vorhandenBeschreibung
statusjasuccess oder error.
brandIdjaDie Marke, der die Verbindung zugeordnet wurde. Entspricht dem Pfadparameter, mit dem Sie den Aufruf ausgeführt haben.
platformjaDie Plattform, die verbunden wurde, e.g. INSTAGRAM.
statenur wenn Sie einen gesendet habenIhr opaker Wert, unverändert zurückgegeben.
connectedAccountIdnur bei status=successUUID der neuen Verbindung, derselbe id, der in der Verbindungsliste erscheint.
Code
https://app.example.com/social/connected  ?status=success  &brandId=6f2c9a41-7b0e-4d55-9a2f-3c8e1d47b902  &platform=INSTAGRAM  &state=sess_9f2c1e64  &connectedAccountId=b81d5b3c-4a90-4f6a-9c11-71e0dd2fa4a7

Hinweise.

  • Der Link läuft ab. expiresIn enthält seine Gültigkeitsdauer in Sekunden. Er ist nur einmal verwendbar: Erstellen Sie ihn in dem Moment, in dem der Nutzer auf „Verbinden“ klickt, nicht im Voraus, und speichern Sie ihn niemals. Wenn der Nutzer den Ablauf abbricht, rufen Sie diesen Endpunkt erneut auf, um eine neue URL zu erhalten.
  • Die Verbindung wird asynchron angelegt. Der Nutzer kehrt einen Moment, bevor der Verbindungseintrag existiert, zu Ihrer redirectUrl zurück, daher kann eine unmittelbar nach der Rückkehr abgerufene Verbindungsliste durchaus noch ohne diesen Eintrag zurückkommen. Fragen Sie die Verbindungsliste einige Sekunden lang wiederholt ab, statt den ersten leeren Abruf als Fehler zu behandeln.
  • Instagram benötigt ein Business- oder Creator-Konto, das mit einer Facebook-Seite verknüpft ist. Ein persönliches Instagram-Konto kann nicht verbunden werden und wird im Zustimmungsdialog der Plattform nicht angeboten. Wenn Ihre Nutzer auf dieses Problem stoßen, bitten Sie sie, das Konto in der Instagram-App umzustellen und mit der von ihnen verwalteten Seite zu verknüpfen, und erstellen Sie anschließend den Link erneut.
  • TWITTER ist X. Der Enum-Wert ist aus Gründen der Abwärtskompatibilität TWITTER geblieben; das Produkt heißt X. Plattformwerte sind Enum-Namen in Großbuchstaben — das Senden von "instagram" wird abgelehnt.
  • redirectUrl und errorUrl müssen absolute https-URLs sein. Eine relative URL oder eine http-URL wird mit SY95049 abgelehnt.
  • Verbindungen sind die nach Verbrauch abgerechnete Ressource. Jede Verknüpfung beansprucht einen Platz aus einem gemeinsamen Kontingent für das gesamte Konto — 20 Verbindungen bei Social Launch, 125 bei Social Growth, dazu fünf für jedes Verbindungspaket für 25 $ pro Monat, bis zu einer im Self-Service verfügbaren Obergrenze von 250. Die Anzahl der Marken selbst ist unbegrenzt, daher ist es immer dieser Aufruf und niemals das Erstellen einer Marke, bei dem die Kapazität erschöpft ist. Wenn das Kontingent ausgeschöpft ist, wird für den Link status: "failed" mit SY95042 zurückgegeben. Siehe Tarife und Zusatzpakete und entnehmen Sie Ihre verbleibende Kapazität GET /social/limits.
  • Dies ist die Social-Entsprechung des Facebook-Verbindungslinks auf Standortebene, aber die beiden sind separate Produkte, und Verbindungen, die in einem Produkt hergestellt werden, sind im anderen nicht sichtbar.

Schreiboperation: nicht im Live-Konto ausgeführt. Die gezeigte Anfrage und Antwort werden aus dem API-Schema erstellt.

Request
curl -X POST 'https://listingsapi.com/api/v4/social/brands/<brandId>/connections/link' \  -H "Authorization: API $LISTINGSAPI_KEY" \  -H 'Content-Type: application/json' \  -d '{    "channel": "INSTAGRAM",    "redirectUrl": "https://app.example.com/social/connected",    "errorUrl": "https://app.example.com/social/connect-failed",    "state": "sess_9f2c1e64"  }'