/api/v4/social/brands/{brandId}/connections/linkEinen Verbindungslink abrufen
Gibt eine kurzlebige, gehostete URL zurück, die einen Endnutzer durch die Verbindung einer sozialen Plattform mit einer Marke führt.
Parameter
Pfad
| Name | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| brandId | string | erforderlich | Brand UUID the connection will be attached to. |
Body
| Name | Typ | Erforderlich | Beschreibung |
|---|---|---|---|
| channel | string | erforderlich | Platform to connect: `FACEBOOK`, `INSTAGRAM`, `TWITTER` (X), `LINKEDIN` or `PINTEREST`. |
| redirectUrl | string | erforderlich | Absolute https URL in your application the user is returned to when the flow finishes. Must be a URL you control. |
| errorUrl | string | optional | Absolute https URL the user is returned to if they cancel or the platform rejects the authorization. Defaults to `redirectUrl` when omitted. |
| state | string | optional | Opaque 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.
{ "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.
{ "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`).
{ "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:
https://app.example.com/social/connected ?status=success &brandId=6f2c9a41-7b0e-4d55-9a2f-3c8e1d47b902 &platform=INSTAGRAM &state=sess_9f2c1e64 &connectedAccountId=b81d5b3c-4a90-4f6a-9c11-71e0dd2fa4a7Hinweise.
- Der Link läuft ab.
expiresInenthä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
redirectUrlzurü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.
TWITTERist X. Der Enum-Wert ist aus Gründen der AbwärtskompatibilitätTWITTERgeblieben; das Produkt heißt X. Plattformwerte sind Enum-Namen in Großbuchstaben — das Senden von"instagram"wird abgelehnt.redirectUrlunderrorUrlmüssen absolutehttps-URLs sein. Eine relative URL oder einehttp-URL wird mitSY95049abgelehnt.- 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"mitSY95042zurückgegeben. Siehe Tarife und Zusatzpakete und entnehmen Sie Ihre verbleibende KapazitätGET /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.
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" }'