異なるアプリとページ間のユーザーのマッピング

アプリのテスト、開発、ステージング、QAの各バージョンで共通のScoped User IDを使用したい場合は、テストアプリを使用してください。

最初にアプリのインスタンスにログインする人と、制限付きログインでログインする人には、Facebookからapp-scoped user IDが発行されます。最初にMessengerボットを使う人には、Facebookからpage-scoped user IDが発行されます。つまり定義上、同一のユーザーのIDがこうしたアプリとボット間で異なる場合があるということです。

1つのビジネスが複数のFacebookアプリやボットを運用するケースがあります。たとえば、ゲーム制作会社がクロスプロモーションや不正の検知、ユーザーとのコミュニケーションに使用するボットなどのユースケースをサポートする場合によく見られます。こうしたケースでは、アプリとボット間で異なる同一のユーザーのIDをマッピングする必要がある場合があります。

複数のアプリ間で同一のユーザーをマッピングする方法は3つあります。

こうしたメカニズムを使用する前に、まず、同一のビジネスによって対象となるアプリが所有および運用されていることをFacebookに伝える必要があります。そのためには、Facebook Businessマネージャを使用して次の操作を実行します。

Userノードのtoken_for_businessフィールド

アプリがビジネスマネージャに関連付けられたなら、制限付きログインまたはアプリのインスタンスへの初回ログインで取得したapp-scoped user IDを使うことにより、Userノードのtoken_for_businessフィールドをリクエストできます。このユーザーにおいては、その呼び出しは、同一のビジネスマネージャが管理するすべてのアプリで同じ共通の文字列を返します。

GET /me?fields=token_for_business

結果は次のようになります。

{
  "id": "1234567890"
  "token_for_business": "weg23ro87gfewblwjef"
}

使用に関するメモ:

  • クエリ対象のユーザーが、該当するアプリにログインしたことがなければなりません。
  • このフィールドは、アプリアクセストークンまたはユーザーアクセストークンを使って呼び出すことができます。ユーザートークンを使用する場合、クエリの対象となるユーザーがトークンが発行されたユーザーと同一である必要があります。
  • 制限付きログインから取得したapp-scoped IDを使っている場合は、グラフAPI呼び出しのための有効なユーザートークンがないため、呼び出しにはアプリのアプリIDを使う必要があります。このコンテキストでの制限付きログインの保護機能はサポートされていませんので、注意してください。
  • 所有するビジネスが変わると、token_for_businessの値も変わります。
  • token_for_businessフィールドをリクエストするときに、アプリがビジネスマネージャに関連付けされていなければ、呼び出しはエラーとなります。
  • token_for_businessによって返される値はIDではなくトークンです。したがって、直接この値を使ってグラフAPIからユーザーの情報にアクセスすることはできません。ユーザーの情報を入手するには、依然としてIDをデータベースに保存し、そのIDを使ってグラフAPIを呼び出す必要があります。

利便性を考慮し、token_for_businessフィールドはすべてのAPIバージョンで利用できます

キャンバスsigned_requestオブジェクトのtoken_for_businessプロパティ

キャンバス表示されるアプリで複数のアプリ間のユーザーマッピングを簡単に行えるようにするため、アプリがビジネスマネージャに関連付けされていて、かつユーザーがアプリにログインしたことがあれば、読み込み時にキャンバスアプリに渡されるsigned_requestを介してtoken_for_businessフィールドが追加され、アプリに渡されます。例:

{
  "algorithm": "HMAC-SHA256",
  "expires": 1414263600,
  "issued_at": 1414257389,
  "oauth_token": "CAAGEkq9GMZAkBAFnvvQ3M6msZBKITLa1gVZBVdnLTdJue2QeV6fMKRXn4G6fcEZB5ZAJyg3z6HdaKOJCCMJ1l9YFWmN4hq6nNnx77f9O7SYhsnPcJ6iH79xjFwqhrALgieDp7GiziMy5Y3Mol6RzHvCM5ceqQe9ZAijvrWZB5hEIwphbMQKEwZA4ZBozXP3NJgEZA3nZCMTTtvleWpxfmqIqO5XwxneCZBsZC4",
  "token_for_business": "AbwoGqummPbF3zp_",
  "user_id": "10154418713995634"
}

token_for_businessフィールドの値は、たとえば/me?fields=token_for_businessを使ってUserノードで直接クエリした場合と同じ値となります。所有するビジネスが変わった場合も同じルールが適用され、token_for_businessの値が変わります。

アプリがビジネスマネージャに関連付けされていない、またはユーザーがアプリにログインしたことがない場合は、signed_requestオブジェクト内にtoken_for_businessプロパティは表示されません。

Userノードのids_for_businessエッジ

Userノードのids_for_businessエッジを呼び出すことで、マッピングされたビジネスIDを取得します。応答としてオブジェクトの配列が返されます。これらの各オブジェクトは、呼び出し側のアプリと同じビジネスに関連付けられ、かつユーザーがログインしたことがあるアプリを表しています。

GET /me/ids_for_business

応答の例:

{
  "data": [
    {
      "id": "10153949089790582", 
      "app": {
        "name": "Business's App 1", 
        "namespace": "business_app_1", 
        "id": "647733625268125"
      }
    }, 
    {
      "id": "605665581", 
      "app": {
        "name": "Business's App 2", 
        "namespace": "business_app_2", 
        "id": "370612223054807"
      }
    }, 
    {
      "id": "10154053730190582", 
      "app": {
        "name": "Business's App 3", 
        "namespace": "business_app_3", 
        "id": "194890427204075"
      }
    }
  ]
}

APIがデータを返すには、API呼び出しを行うアプリと同じビジネスに関連付けられた1つ以上のアプリに、ユーザーがログインしたことがなければなりません。たとえば、ユーザーが同じビジネスに関連付けられた5つのアプリのうち3つにログインしたことがある場合、APIは3つのオブジェクトを返します。

よくある質問

ビジネスマッピングAPIを使用する必要がありますか?

いいえ。ビジネスマッピングAPIは、複数のFacebookアプリを運用しているビジネスが、アプリ間で同じユーザーのIDをマッピングする必要がある場合にのみ有効です。メインのアプリを1つ所有している場合、ビジネスマッピングAPIの使用が必要になる可能性が低いため、ビジネスの設定やアプリとビジネスの関連付けを行う必要はありません。

ビジネスマネージャとは?

ビジネスマネージャは、企業や代理店がFacebookページ、広告アカウント、アプリ、支払い方法を一元管理できるようにするツールです。ビジネスマネージャについて詳しくはこちら

ビジネスマッピングAPIを使用する必要はないと思いますが、それでもアプリをビジネスに関連付ける必要はありますか?

ビジネスマッピングAPIを使用する必要がないのであれば、現時点でビジネスを設定することは推奨しません。ビジネスは企業のメインのFacebookページにリンクする必要があるため、Facebookでビジネスを設定するにあたっての適任者は、通常、会社内でFacebook広告アカウントおよびページへのアクセス許可の管理を担当している方です。担当者様によってすでにビジネスが設定されている場合には、そのビジネスに自由にアプリを関連付けることができます。

アプリを複数のビジネスに関連付けることはできますか?

いいえ。1つのアプリを一度に関連付けられるビジネスの数は1つのみです。

アプリを他のビジネスに移行させることはできますか?

はい。まず、現在関連付けられているビジネスからアプリを削除する必要があります。この削除操作はビジネスマネージャで行えます。ビジネス設定の[アプリケーション]タブに移動し、アプリを選択して、[削除]をクリックします。その後、アプリを新しいビジネスに関連付けます。