アカウントのリンクは、Messengerプラットフォームで提供されている他のウェブビュー機能とは異なるものです。これは、ログインボタンでのみ起動できます。ボットの固定メニュー、URLボタン、既に開いているウェブビューフロー内、チャットプラグインからは起動できません。
これらの機能を利用している開発者は、MessengerエクステンションのgetContext()
関数を使って、ユーザーのIDを安全に取得できるようになりました。ボットはそのIDを使用して、ユーザーのアカウントをリンクしたり、エクスペリエンスをパーソナライズしたりできます。
現時点で、アカウントのリンクは、iOSとAndroidのMessengerアプリにのみ対応しています。
ユーザーがビジネスと会話を始めると、ビジネスは、その人がすでに自社のアカウントを持っているお客様なのか確認したいと思うでしょう。簡単に確認できるようにするため、MessengerユーザーのIDとビジネスのユーザーIDをリンク/リンク解除できる安全なプロトコルを用意しました。
アカウントのリンクを使用して、ユーザーに自社の認証フローを使ってログインしてもらい、完了時にMessengerのpage-scoped ID (PSID)を受け取ることができます。これにより、さらに安全で、パーソナライズされた快適なエクスペリエンスをユーザーに提供できます。
アカウントのリンクのフローは数ステップで構成されるシンプルな手順です。
redirect_uri
パラメーターとaccount_linking_token
パラメーターが登録されたコールバックに追加されます。redirect_uri
で指定された場所にユーザーをリダイレクトし、authorization_code
パラメーター(開発者が指定)を追加してリンクを確認します。アカウントのリンク解除は、次の方法で開始できます。
ユーザーがアカウントのリンクをトリガーすると、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
は追加しません。
パラメーター名 | 説明 |
---|---|
| Messengerによって追加されるリダイレクトURI。認証フローの最後に、ブラウザーをこの場所にリダイレクトする必要があります。URLエンコードされたパラメーターが含まれる場合があります。 |
| Messengerから渡される短期トークン。リダイレクトスキームの一部として返す必要があります。このトークンは5分間のみ有効であり、ユーザーごとに固有で、暗号化されています。 |
| リンクが正常に完了したことを確認するため、開発者が指定するコード。Messengerプラットフォームから、このコードと、アカウントのリンクWebhookイベントの結果としてユーザーのPSIDが渡されます。このパラメーターが渡されなかった場合は、リンクプロセスは中止になります。 |
リンクが正常に完了すると、アカウントのリンクのイベントがトリガーされ、ユーザーのpage-scoped ID (PSID)が配信されます。
アカウントのリンクのコールバックイベントを登録する必要があります。このWebhookイベントが認識されないと、リンクプロセスが中止します。
場合によっては、リンクのフロー中に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で保存できます。
可能であれば、すぐにアカウントのリンクを求めることは避けてください。まずはユーザーにボットを試してもらいましょう。