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

接続リンクを取得する

エンドユーザーが1つのソーシャルプラットフォームをブランドに接続する手順を案内する、有効期間の短いホスト型URLを返します。

API キーが必要です。ヘッダーの形式とキーのローテーションについては認証を参照してください。

パラメーター

パス

名前型必須説明
brandIdstring必須Brand UUID the connection will be attached to.

ボディ

名前型必須説明
channelstring必須Platform to connect: `FACEBOOK`, `INSTAGRAM`, `TWITTER` (X), `LINKEDIN` or `PINTEREST`.
redirectUrlstring必須Absolute https URL in your application the user is returned to when the flow finishes. Must be a URL you control.
errorUrlstring任意Absolute https URL the user is returned to if they cancel or the platform rejects the authorization. Defaults to `redirectUrl` when omitted.
statestring任意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 と値をご自身のものに置き換えてください。

Request body
{  "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.
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`).

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)にユーザーが移動します。

パラメーター常に含まれるか説明
statusはいsuccessまたはerrorです。
brandIdはい接続が紐付けられたブランドです。呼び出し時に指定したパスパラメーターと一致します。
platformはい接続されたプラットフォームです(例:INSTAGRAM)。
state送信した場合のみ指定した不透明な値が、そのまま返されます。
connectedAccountIdstatus=successの場合のみ新しい接続のUUIDで、接続一覧に表示されるidと同じです。
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

注意事項。

  • リンクには有効期限があります。 expiresInには有効期間が秒単位で格納されています。リンクは1回限り使用できます。事前に発行せず、ユーザーが「接続」をクリックした時点で発行し、決して保存しないでください。ユーザーがフローを中断した場合は、このエンドポイントを再度呼び出して新しいURLを取得してください。
  • 接続レコードは非同期で作成されます。 ユーザーは接続レコードが作成される少し前に指定したredirectUrlに戻るため、戻った直後に接続一覧を取得した際に、その接続が含まれていなくても正常です。最初の取得結果が空であることを失敗とみなさず、接続一覧を数秒間ポーリングしてください。
  • Instagramには、Facebookページにリンクされたビジネスアカウントまたはクリエイターアカウントが必要です。 個人用Instagramアカウントは接続できず、プラットフォームの同意画面にも選択肢として表示されません。ユーザーにこの問題が発生した場合は、Instagramアプリでアカウントの種類を変更し、管理しているページにリンクしてもらってから、リンクを再発行してください。
  • TWITTERはXです。 後方互換性のため列挙値はTWITTERのままですが、製品はXです。プラットフォームの値は大文字の列挙名です。"instagram"を送信すると拒否されます。
  • redirectUrlとerrorUrlは、絶対https URLである必要があります。相対URLまたはhttp URLは、SY95049で拒否されます。
  • 接続が使用量を計測するリソースです。 各接続は、1つのアカウント全体で共有する接続枠を消費します。Social Launchでは20接続、Social Growthでは125接続で、月額$25の接続パックごとに5接続が追加され、セルフサービスでの上限は250接続です。ブランド自体の数に制限はないため、枠が不足するのは常にこの呼び出しであり、ブランドの作成ではありません。接続枠がすべて使用されている場合、status: "failed"とSY95042が返されます。プランとアドオンを参照し、GET /social/limitsで残りの接続枠を確認してください。
  • これは、拠点単位のFacebook接続リンクに相当するSocialの機能ですが、両者は別の製品であり、一方で作成した接続は他方には表示されません。

書き込み操作:実際のアカウントに対しては実行していません。表示されているリクエストとレスポンスは、APIスキーマに基づいて作成されています。

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"  }'