Skip to main content
ユーザーは自分自身のソーシャルアカウントを自分で連携します — 各ネットワークで直接認証するため、 開発者がユーザーの認証情報を目にしたり保存したりすることはありません。このページで扱うのは、 ユーザーをその瞬間まで導き、結果がどうだったかを知るためのすべてです。 すべてのルートに共通するものが 1 つあります: リンクセッションです。API Key と Profile-Key から Link Session の作成で作成します。お客様側で署名するものはなく、 フローに秘密鍵は登場しません。

3 つの連携方法

形は 3 つありますが、最初の 2 つは同じ統合です。フローごとに選択してください — 排他的なものでは なく、オンボーディングにはホスト型リンクページを、その後のアプリ内ではウィジェットを使う統合も 多数あります。
ウィジェットの 2 つの行は 2 つの統合ではなく、1 つの統合です。1 回の init で両方が使えます: 当社のボタンを置きたい場所にフレームをマウントし、それ以外の場所では独自のボタンから popup() を 呼び出します。両者は 1 つのセッションを共有し、同じハンドラーに結果を報告します。ダイレクトモード(Direct Mode)は、当社のスクリプトなしの 同じポップアップです — 厳格な Content-Security-Policy を持つページ、サーバーレンダリングされる ページ、ネイティブアプリ向けで、この場合はポップアップを自分で開いて監視します。迷ったら? ホスト型リンクページから始めてください。Max Pack も追加パラメータも不要で、動くものに 到達する最速のルートです — 後からウィジェットに移行しても、セッションの作成方法は変わりません。

リンクの作成

ヘッダーにユーザーの Profile-Key を指定して Link Session の作成を 呼び出します。ホスト型ページの場合、リクエストはこれだけです:
cURL
短時間だけ有効な不透明なトークンを含む url が返されます:
Linking URL
リンクが開かれたかどうかの確認や、期限切れ前の 失効も行えます。
この 1 分間の動画はリンクの作成手順を紹介しています。Link Sessions より前に収録されたため、 Private Key を送信する様子が残っていますが、その手順はもう必要ありません。それ以外の内容は 変わっていません。

リンク用 URL の送信

リンク用 URL はユーザーをそのプロファイルにサインインさせるため、パスワードと同様に扱ってください。 信頼できる経路で送り、ログに残さず、第三者に渡さないでください。有効期間中は使い続けられるので リロードや OAuth の再試行は問題ありませんが、各リンクは 1 人のユーザーにのみ送り、人ごとに個別の リンクを作成してください。

リンク用 URL を開く

リンク用 URL は、新しいブラウザタブ、ウィンドウ、または View Controller で開きます。そのウィンドウの 閉じる、またはリダイレクトする動作 を制御することができます。
ソーシャルネットワークは、ホスト型リンクページを iFrame 内で開いたり、承認済みのパートナー オリジン profile.ayrshare.com を難読化することを許可していません。連携を自身のページ内で 完結させたい場合は、そのために 埋め込みウィジェットがあります: ウィジェットのフレームは Ayrshare のオリジンから配信され、これがサポートされている方法です。

完了したことを知る

シグナルは 2 つあり、どちらでも使えます:
  • リンク完了イベント — リンク作成時に origin を設定 すると、連携ウィンドウが connect:successconnect:errorconnect:cancelled を発生と同時に 貴社のページへ post します。ポーリングは不要です。
  • Link Session の取得completedAtlastCompletedAtcompletedNetworks を報告します。ネイティブアプリ向けのシグナルであり、帯域外で完了する Telegram にとっては唯一のシグナルです。

リンクの有効期限

リンクはデフォルトで 5 分間 有効です。それを過ぎたら、新しいリンクを作成してください。 Max Pack があれば、expiresIn を分単位で設定して有効期間を広げられます — API が受け付ける最大値は **2880 分(48 時間)**です:
Expires In
有効期間を長くすることで、リンクのメール送信が現実的になります — 接続が切れたアカウントを再接続するユーザーは、まず貴社のアプリを訪れることなく、メールから直接 ネットワークへ進めます。
リンクをどれだけの期間有効にしておくべきかは、セキュリティチームと必ず確認してください。 有効期間が長いほど、傍受されたリンクが使える期間も長くなります。リンクが流出した場合は、 期限切れを待つのではなく失効させることができます。

Profile Key

Profile-Key は、リンクがどの User Profile のものかを示します。Ayrshare の開発者ダッシュボードで そのプロファイルに切り替えると確認できます。
Private Key は使用されなくなりました。 リンクは署名されないため、ファイルから読み込んだり コードに貼り付けたりするものはありません。レガシーの privateKey パラメータは引き続き受け付け られて無視されるので既存の連携はそのまま動作し、Integration Package の private.key ファイルは 使わないままで構いません。

プロファイルの切り替え

プロファイルがすでにサインインしている場合、別のプロファイルのリンクを開いてもプロファイルは 切り替わりません — これは意図的なもので、すでにサインインしているユーザーの体験を高速に保つため です。強制的に切り替えるには、 Automatic Logout of a Profile Session を参照してください。 Instagram アカウントは 2 つの方法でリンクできます: Instagram Login を用いて直接リンクする方法と、接続された Facebook Page を経由する方法です。 ユーザーが Instagram ボタンをクリックしたときにどちらのフローが開始されるかは、通常、アカウント 全体の Instagram Login 設定によって制御されます。 instagramLinkMethod ボディパラメータを使用すると、単一のリンクに対してその設定を上書きできます:
Instagram Link Method
この上書きは、Instagram/Facebook の認可リダイレクトを跨ぐ場合も含めて、そのリンクの有効期間中 適用されます。いくつかの注意点:
  • アカウント全体の設定を変更したり、他のリンクに影響を与えたりしません。
  • 省略した場合は、これまでどおりアカウント全体の設定が適用されます。
  • 無効な値は、有効な値(instagramfacebook)を列挙した 400 を返します。
  • 上書きを選択する前に、 機能の違い を確認してください — ハッシュタグ検索やコラボレーションなど、一部の Instagram 機能は Facebook Page 認証でのみ利用可能です。

Connect Accounts メール

Ayrshare がリンクをユーザーにメールで送信するので、ユーザーは貴社のアプリを訪れることなく連携ページ に到達できます。より長い expiresIn と組み合わせてください — デフォルトの 5 分は 受信トレイの中ではまず持ちません。

Connect Accounts JSON

email 内のすべてのフィールドが必須です。 1 つでも欠けると送信は失敗します。
Example Contact Email Request
expiresInトップレベル のパラメータであり、email オブジェクトの一部ではありません。 email の中に入れると無視され、ユーザーには 5 分で期限切れになるリンクが届きます。
レスポンスは結果を emailSent で報告します:
Example Contact Email Response
送信の失敗emailSent: false として返されるのではなく、代わりに code: 333 が返されます。 つまり false は、メールが要求されなかったことを意味します。

Connect Accounts メールの例

ソーシャル連携ページを開くメールの例です: Connect Accounts email メールは以下のアドレスから送信されます: Social Connect Hub <connect@socialconnecthub.com>

モバイルアプリ

リンク用 URL は、埋め込み webview ではなく必ずシステムブラウザで開いてください: webview 内の サインインは Google が disallowed_useragent で拒否し、Meta は完全にブロックします。ユーザーには ネットワーク自身のエラーページが表示され、貴社側の対処では解決できません。
  • iOSASWebAuthenticationSession、または SFSafariViewController
  • Android — Chrome Custom Tabs。
ネイティブアプリにはイベントを post する先のブラウザウィンドウがないため、結果は代わりに Link Session の取得から取得してください。origin にカスタム スキーム(myapp://connected)を設定すると、ページからアプリに戻る手段が確保されます。

モバイルコード例

linkingURLLink Session の作成が返す url に 置き換えてください。

テスト

まず Postman でリンクの作成をテストすることを推奨します。ダッシュボードの Primary Profile の API Key ページから入手できる Integration Package には、サンプルの Postman 設定が 含まれています。インポートし、profileKeybody フィールドに Profile Key を入力して、Send を クリックしてください。 サンプル設定には現在も privateKeydomain が事前入力されています。privateKey は無視され、 アカウントにリンク用ドメインが複数ない限り domain は空にして構いません。 Postman からコードを生成することもできます。

Bubble.io

Bubble linking URL

レガシー: generateJWT

リンク用 URL の生成(generateJWT)は同じ処理を行い、非推奨です — 完全にサポートされ、削除予定はなく、すでに配布済みのリンクについても変更はありません。パラメータの 詳細は同エンドポイントのページに記載されており、現在は受け付けられて無視される 3 つのパラメータも そこで説明しています。両方のエンドポイントは同じバリデータを使うため、このページの内容はどちらにも当てはまります。移行時に 知っておく価値のある違いは 1 つだけです: generateJWT は、Link Session の作成が拒否する 3 つのもの — 未知の allowedSocial ネットワーク、X 認証情報の片方のみ、文字列でない redirect — を許容します。