アカウントのリンク

アカウントのリンクは、Messengerプラットフォームで提供されている他のウェブビュー機能とは異なるものです。これは、ログインボタンでのみ起動できます。ボットの固定メニューURLボタン、既に開いているウェブビューフロー内、チャットプラグインからは起動できません。

これらの機能を利用している開発者は、MessengerエクステンションのgetContext()関数を使って、ユーザーのIDを安全に取得できるようになりました。ボットはそのIDを使用して、ユーザーのアカウントをリンクしたり、エクスペリエンスをパーソナライズしたりできます。

現時点で、アカウントのリンクは、iOSとAndroidのMessengerアプリにのみ対応しています。

ユーザーがビジネスと会話を始めると、ビジネスは、その人がすでに自社のアカウントを持っているお客様なのか確認したいと思うでしょう。簡単に確認できるようにするため、MessengerユーザーのIDとビジネスのユーザーIDをリンク/リンク解除できる安全なプロトコルを用意しました。

アカウントのリンクを使用して、ユーザーに自社の認証フローを使ってログインしてもらい、完了時にMessengerのpage-scoped ID (PSID)を受け取ることができます。これにより、さらに安全で、パーソナライズされた快適なエクスペリエンスをユーザーに提供できます。

目次

リンクのプロセス

アカウントのリンクのフローは数ステップで構成されるシンプルな手順です。

  1. ログインボタンを使用してコールバックURLを登録します。
  2. ユーザーがアカウントのリンクのフローを開始すると、Messengerプラットフォームがこの登録されたURLを呼び出します。redirect_uriパラメーターとaccount_linking_tokenパラメーターが登録されたコールバックに追加されます。
  3. リンクが完了したら、redirect_uriで指定された場所にユーザーをリダイレクトし、authorization_codeパラメーター(開発者が指定)を追加してリンクを確認します。
  4. 任意で、アカウントのリンクのエンドポイントを使ってユーザーのpage-scoped ID (PSID)を取得します。このステップは、リンクのプロセスの一環としてユーザーのPSIDが必要になる特殊なケースでのみ使用してください。

アカウントのリンク解除は、次の方法で開始できます。

コールバック

ユーザーがアカウントのリンクをトリガーすると、MessengerプラットフォームによってアカウントのリンクURLが呼び出されます。redirect_uriパラメーターとaccount_linking_tokenパラメーターがURLコールバックに追加されます。

<yourAccountLinkingUrl>
  ?account_linking_token=ACCOUNT_LINKING_TOKEN
  &redirect_uri=CALLBACK_URL

アカウントのリンクが成功した場合、ブラウザーをredirect_uriパラメーターで指定されたURLにリダイレクトし、定義したauthorization_codeパラメーターを追加してフローを完了させる必要があります。すでにURLにパラメーターが含まれている場合は、それに応じて認証コードを追加してください。

<redirect_uri>
  &authorization_code=AUTHORIZATION_CODE

アカウントのリンクに失敗した場合は、パラメーターとして渡されたredirect_uriにブラウザーをリダイレクトしますが、authorization_codeは追加しません。

パラメーター

パラメーター名 説明

redirect_uri

Messengerによって追加されるリダイレクトURI。認証フローの最後に、ブラウザーをこの場所にリダイレクトする必要があります。URLエンコードされたパラメーターが含まれる場合があります。

account_linking_token

Messengerから渡される短期トークン。リダイレクトスキームの一部として返す必要があります。このトークンは5分間のみ有効であり、ユーザーごとに固有で、暗号化されています。
このトークンを使ってPSIDの取得エンドポイントを呼び出し、対応するPSIDを取得できます。

authorization_code

リンクが正常に完了したことを確認するため、開発者が指定するコード。Messengerプラットフォームから、このコードと、アカウントのリンクWebhookイベントの結果としてユーザーのPSIDが渡されます。このパラメーターが渡されなかった場合は、リンクプロセスは中止になります。

Webhookイベント

リンクが正常に完了すると、アカウントのリンクのイベントがトリガーされ、ユーザーのpage-scoped ID (PSID)が配信されます。

アカウントのリンクのコールバックイベントを登録する必要があります。このWebhookイベントが認識されないと、リンクプロセスが中止します。

PSIDの取得エンドポイント

場合によっては、リンクのフロー中にuser page-scoped ID (PSID)を取得する必要があります。そうした場合に備えて、Facebookでは、account_linking_tokenが有効かつ有効期限内であればユーザーのPSIDを取得できる、PSIDの取得エンドポイントを提供しています。

リクエスト

curl -X GET "https://graph.facebook.com/v2.6/me?access_token=PAGE_ACCESS_TOKEN \
      &fields=recipient \
      &account_linking_token=ACCOUNT_LINKING_TOKEN"

応答

{
  "id": "PAGE_ID",
  "recipient": "PSID"
}    

場合によっては、バックエンドからプログラムを使ってユーザーのpage-scoped ID (PSID)のリンクを解除する必要があります。そうした場合に備えて、Facebookでは、PSIDが有効であればユーザーのアカウントのリンクを解除できる、PSIDのリンク解除のエンドポイントを提供しています。

リクエスト

curl -X POST -H "Content-Type: application/json" -d '{
   "psid":"PSID"
}' "https://graph.facebook.com/v2.6/me/unlink_accounts?access_token=PAGE_ACCESS_TOKEN"

応答

{
  "result": "unlink account success"
}

ベストプラクティス

Messenger以外にも拡張できるユーザーアカウントシステムがあるなら、アカウントのリンクを使用してください。

ユーザーが別の場所でも利用できるアカウントを、Messenger内から作成できるようにします。

関連性が高いコンテキストでログインのプロンプトを出しましょう。つまり、ボットユーザーがログインすることのメリットを理解できる状況で出します。

ユーザーがログインを拒否した場合のボットの動作を考えておきましょう。

明確な確認メッセージを表示し、ログイン後には友好的なウェルカムメッセージを表示します。

ユーザーがやり取りにMessengerのみを利用する場合は、アカウントのリンクを使わないでください。アカウント情報は、スレッドIDで保存できます。

可能であれば、すぐにアカウントのリンクを求めることは避けてください。まずはユーザーにボットを試してもらいましょう。

推奨デザインフロー

  1. [アカウントのリンク]ボタンがあるメッセージで、ログインのプロンプトを出します
  2. アカウントのリンクのウェブビューにログインページ([アカウントの作成]オプションあり)を表示します。モバイル画面でも表示や機能が適正であることを確認します。
  3. ログインに成功したら、ウェブビューに確認メッセージを表示します。ユーザーは、このメッセージを確認後、手動で閉じる必要があります。
  4. 続いてお礼のメッセージや次の手順([ログアウト]オプションも含む)をスレッドで表示します。