/api/v4/social/brands/{brandId}/connections/link接続リンクを取得する
エンドユーザーが1つのソーシャルプラットフォームをブランドに接続する手順を案内する、有効期間の短いホスト型URLを返します。
パラメーター
パス
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
| brandId | string | 必須 | Brand UUID the connection will be attached to. |
ボディ
| 名前 | 型 | 必須 | 説明 |
|---|---|---|---|
| channel | string | 必須 | Platform to connect: `FACEBOOK`, `INSTAGRAM`, `TWITTER` (X), `LINKEDIN` or `PINTEREST`. |
| redirectUrl | string | 必須 | Absolute https URL in your application the user is returned to when the flow finishes. Must be a URL you control. |
| errorUrl | string | 任意 | Absolute https URL the user is returned to if they cancel or the platform rejects the authorization. Defaults to `redirectUrl` when omitted. |
| state | string | 任意 | 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. |
リクエストの例
そのまま貼り付けられるボディです。プレースホルダーの ID と値をご自身のものに置き換えてください。
{ "channel": "INSTAGRAM", "redirectUrl": "https://app.example.com/social/connected", "errorUrl": "https://app.example.com/social/connect-failed", "state": "sess_9f2c1e64"}レスポンス
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`).
1つのソーシャルプラットフォームを1つのブランドに接続する、有効期間の短いURLを発行します。プラットフォームのOAuth認証情報を扱うことは一切ありません。エンドユーザーを返されたurlにリダイレクトすると、ユーザーはプラットフォームの同意画面で手続きを完了し、投稿先のページ、ボード、または組織を選択した後、指定したredirectUrlに戻ります。
Socialの書き込み操作で、ボディをラップしないのはこれだけです。 Social APIのその他すべての書き込み操作はinputオブジェクトでラップされますが、この操作はラップされません。channel、redirectUrl、および必要に応じてerrorUrlとstateをトップレベルで送信してください。
ユースケース:製品内でユーザー自身がチャネルを接続できるようにする。 ユーザーに5つのプラットフォームを表示し、1つが選択されたら、そのchannelとユーザーのセッションを識別するstateを指定して、このエンドポイントを呼び出します。ユーザーをurlにリダイレクトします。ユーザーがstatus=success付きでredirectUrlに戻ったら、新しいチャネルが表示されるまでGET /social/brands/{brandId}/connectionsをポーリングし、その後POST /social/postsを使って最初の投稿を作成できるようにします。
ユーザーの戻り先
フローが終了すると、クエリパラメーターを付加したredirectUrl(またはerrorUrl)にユーザーが移動します。
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注意事項。
- リンクには有効期限があります。
expiresInには有効期間が秒単位で格納されています。リンクは1回限り使用できます。事前に発行せず、ユーザーが「接続」をクリックした時点で発行し、決して保存しないでください。ユーザーがフローを中断した場合は、このエンドポイントを再度呼び出して新しいURLを取得してください。 - 接続レコードは非同期で作成されます。 ユーザーは接続レコードが作成される少し前に指定した
redirectUrlに戻るため、戻った直後に接続一覧を取得した際に、その接続が含まれていなくても正常です。最初の取得結果が空であることを失敗とみなさず、接続一覧を数秒間ポーリングしてください。 - Instagramには、Facebookページにリンクされたビジネスアカウントまたはクリエイターアカウントが必要です。 個人用Instagramアカウントは接続できず、プラットフォームの同意画面にも選択肢として表示されません。ユーザーにこの問題が発生した場合は、Instagramアプリでアカウントの種類を変更し、管理しているページにリンクしてもらってから、リンクを再発行してください。
TWITTERはXです。 後方互換性のため列挙値はTWITTERのままですが、製品はXです。プラットフォームの値は大文字の列挙名です。"instagram"を送信すると拒否されます。redirectUrlとerrorUrlは、絶対httpsURLである必要があります。相対URLまたはhttpURLは、SY95049で拒否されます。- 接続が使用量を計測するリソースです。 各接続は、1つのアカウント全体で共有する接続枠を消費します。Social Launchでは20接続、Social Growthでは125接続で、月額$25の接続パックごとに5接続が追加され、セルフサービスでの上限は250接続です。ブランド自体の数に制限はないため、枠が不足するのは常にこの呼び出しであり、ブランドの作成ではありません。接続枠がすべて使用されている場合、
status: "failed"とSY95042が返されます。プランとアドオンを参照し、GET /social/limitsで残りの接続枠を確認してください。 - これは、拠点単位のFacebook接続リンクに相当するSocialの機能ですが、両者は別の製品であり、一方で作成した接続は他方には表示されません。
書き込み操作:実際のアカウントに対しては実行していません。表示されているリクエストとレスポンスは、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" }'