/api/v4/social/brands/{brandId}/connections/linkOttieni un link di connessione
Restituisce un URL ospitato di breve durata che guida un utente finale nel collegamento di una piattaforma social a un brand.
Parametri
Percorso
| Nome | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
| brandId | string | obbligatorio | Brand UUID the connection will be attached to. |
Corpo
| Nome | Tipo | Obbligatorio | Descrizione |
|---|---|---|---|
| channel | string | obbligatorio | Platform to connect: `FACEBOOK`, `INSTAGRAM`, `TWITTER` (X), `LINKEDIN` or `PINTEREST`. |
| redirectUrl | string | obbligatorio | Absolute https URL in your application the user is returned to when the flow finishes. Must be a URL you control. |
| errorUrl | string | facoltativo | Absolute https URL the user is returned to if they cancel or the platform rejects the authorization. Defaults to `redirectUrl` when omitted. |
| state | string | facoltativo | 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. |
Richiesta di esempio
Corpo pronto da incollare. Sostituisci gli ID e i valori segnaposto con i tuoi.
{ "channel": "INSTAGRAM", "redirectUrl": "https://app.example.com/social/connected", "errorUrl": "https://app.example.com/social/connect-failed", "state": "sess_9f2c1e64"}Risposte
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`).
Genera un URL di breve durata che collega una piattaforma social a un brand. Non gestisci mai le credenziali OAuth della piattaforma: reindirizza l'utente finale al valore url restituito; l'utente completa la schermata di consenso della piattaforma e sceglie la Pagina, la bacheca o l'organizzazione su cui pubblicare, quindi viene reindirizzato al tuo redirectUrl.
Questa è l'unica operazione di scrittura di Social con un corpo senza annidamento. Ogni altra operazione di scrittura nella Social API è racchiusa in un oggetto input; questa no. Invia channel, redirectUrl e, facoltativamente, errorUrl e state al livello principale.
Caso d'uso: connessione autonoma dei canali all'interno del tuo prodotto. Mostra all'utente le cinque piattaforme e, quando ne sceglie una, chiama questo endpoint con il relativo channel e un state che identifichi la sua sessione. Reindirizzalo a url. Quando torna al tuo redirectUrl con status=success, interroga periodicamente GET /social/brands/{brandId}/connections finché non compare il nuovo canale, quindi consentigli di comporre il suo primo post con POST /social/posts.
Dove viene reindirizzato l'utente
Al termine del flusso, l'utente viene reindirizzato al tuo redirectUrl (o errorUrl) con i parametri di query aggiunti:
https://app.example.com/social/connected ?status=success &brandId=6f2c9a41-7b0e-4d55-9a2f-3c8e1d47b902 &platform=INSTAGRAM &state=sess_9f2c1e64 &connectedAccountId=b81d5b3c-4a90-4f6a-9c11-71e0dd2fa4a7Note.
- Il link scade.
expiresInne indica la durata in secondi. È monouso: generalo nel momento in cui l'utente fa clic su "collega", non in anticipo, e non memorizzarlo mai. Se l'utente abbandona il flusso, chiama nuovamente questo endpoint per ottenere un nuovo URL. - La connessione viene creata in modo asincrono. L'utente torna al tuo
redirectUrlun istante prima che esista la riga della connessione, quindi una lettura dell'elenco delle connessioni eseguita immediatamente al ritorno può legittimamente non includerla. Interroga periodicamente l'elenco delle connessioni per alcuni secondi invece di considerare la prima lettura vuota come un errore. - Instagram richiede un account Business o Creator collegato a una Pagina Facebook. Un account Instagram personale non può essere collegato e non verrà proposto nella schermata di consenso della piattaforma. Se i tuoi utenti riscontrano questo problema, chiedi loro di convertire l'account nell'app Instagram e collegarlo alla Pagina che gestiscono, quindi genera nuovamente il link.
TWITTERè X. Il valore dell'enum è rimastoTWITTERper compatibilità con le versioni precedenti; il prodotto è X. I valori della piattaforma sono nomi di enum in maiuscolo: l'invio di"instagram"viene rifiutato.redirectUrleerrorUrldevono essere URLhttpsassoluti. Un URL relativo ohttpviene rifiutato conSY95049.- Le connessioni sono la risorsa conteggiata a consumo. Ogni collegamento attinge a un unico contingente condiviso da tutto l'account: 20 connessioni con Social Launch, 125 con Social Growth, più cinque per ogni pacchetto di connessioni da $25/mese, fino a un massimo di 250 gestibile in autonomia. Il numero di brand è illimitato, quindi è sempre questa chiamata, mai la creazione di un brand, a esaurire lo spazio disponibile. Quando il contingente è esaurito, la richiesta del link restituisce
status: "failed"conSY95042. Consulta Piani e componenti aggiuntivi e verifica la capacità residua tramiteGET /social/limits. - Questo è l'equivalente Social del link di connessione a Facebook a livello di sede, ma i due sono prodotti separati e le connessioni effettuate in uno non sono visibili nell'altro.
Operazione di scrittura: non eseguita sull'account reale. La richiesta e la risposta mostrate sono generate a partire dallo schema dell'API.
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" }'