Metaワークアカウントとサードパーティの統合

概要

Metaワークアカウントは、Metaでビジネスツールを使用するためのアカウントタイプです。組織は、シングルサインオン(SSO)サポート、アカウントの自動プロビジョニングなどの管理機能を利用して、Metaワークアカウントを管理することができます。ワークアカウントを持つ個人は、ワークアカウントの認証情報を使用してMetaのビジネスツール(ビジネスマネージャなど)にアクセスできます。個人用Facebookアカウントを使用する必要はありません。

ワークアカウントは仕事専用のアカウントであるため、以下の制限があります。

  • ソーシャルタイムラインやFacebookニュースフィードを表示できません
  • facebook.com上の消費者向けの商品や内容にアクセスできません。ただし、ページとして投稿するためにアクセスすることはできます
  • 個人のアセットへのアクセス許可を取得できません(ビジネスアカウントで取得する必要があります)
  • ビジネスアプリタイプのアクセス許可だけを付与することができます。user_friendsuser_postsなど、user_*関連のアクセス許可は付与できません。Metaワークアカウントでログインフローリクエストを実行することはできますが、user_*関連のアクセス許可は無視されます。

サードパーティアプリとの連携

ビジネスがMetaワークアカウントへ移行すると、ユーザーは個人用Facebookアカウントではなく仕事用の認証情報を使って、Metaのビジネスツールにアクセスするようになります。ユーザーは、個人のFacebookアカウントではなくワークアカウントでビジネスマネージャにログインできます。

アプリがシステムユーザーアクセストークンまたはパートナー共有を使用してクライアントのビジネス アセットにアクセスしている場合、サードパーティ連携は影響を受けません。アプリがユーザーアクセストークン(またはユーザーアクセストークンから生成されたページアクセストークン)を使用している場合、個人用Facebookアカウントにより付与されたビジネスアセットへのアプリのアクセス許可とアクセスが、自動的に新しいMetaワークアカウントに移行することはありません。アプリがそのようなビジネスアセットに引き続きアクセスするには、ユーザーは新しいワークアカウントを使ってそれらのビジネスアセットへのアクセス許可を付与し直す必要があります。




技術提供者向けのガイドライン

API呼び出しで障害が発生する可能性をあらかじめ最小限に抑えるため、アプリで以下の機能を提供することをおすすめします。

  • トークンが無効になる前にアセット(ページ、広告アカウントなど)を再認証する機能。これを行うには、定期的に各アセットのuser_access_expire_timeフィールドをチェックし、タイムスタンプが返された場合にはユーザーに再認証を求めるプロンプトを表示します。
  • ユーザーが、切断されたアセットや間もなく切断されるアセットを一括で再認証できるようにする機能。アプリケーションに[再接続]または[期限切れのトークンを置き換える]ボタンを含めることで、ユーザーがビジネスアセットを1つずつ再接続するのではなく、一度にまとめて再接続できるようにします。このボタンが、ビジネスアセットIDのリストと新しいアクセストークンをパラメーターとして使用して、サーバーへのAPI呼び出しをトリガーするようにします。その後、サーバーは、リスト内の各ビジネスアセットの新しいアクセストークンを使用して、アプリケーションのデータベースやストレージに安全に保存することができます。
  • テストの利用を始める

    連携でMetaワークアカウントがサポートされているかどうかを検証するサンドボックス。

    ワークアカウントをテストする

    アプリダッシュボードの[テストユーザー]セクションで、シミュレーション用のワークアカウントを作成して管理することができます。このアカウントを使って、Facebookログインの実装と、アプリで使用するアクセス許可や機能をテストすることができます。テストユーザーツールの機能を活用してワークアカウントのテストユーザーを作成し管理することで、アプリにFacebookログイン機能を統合しながら、ユーザーがワークアカウントにスムーズにログインできるようにします。

    このようなテスト用のワークアカウントが、実際のユーザーとやり取りすることはありません。テストユーザーの操作によって生成されたデータは、そのアプリのほかのテストユーザー、またはそのアプリの管理者、開発者、テスターのいずれかの役割を持つ実際のユーザーにのみ表示されます。テストユーザーの作成、編集、削除、およびテストユーザーとしてのログインは、(グラフAPIからではなく)アプリダッシュボードからのみ行えます。

    制限

    テストユーザーの制限に関する詳細については、基本のドキュメントを参照してください。ワークアカウントのテストには、Facebookユーザーのテストの場合と同じ制限が適用されます。ただし、アプリは1つのテストワークアカウントのみに限定されます。

    テストワークアカウントを作成する

    テストユーザーを作成するには、アプリダッシュボード[役割] > [テストユーザー]パネルの[テストユーザー]セクションで、[ワークアカウント]タブを選択し、[テストユーザーを作成]ボタンをクリックします。表示されるダイアログで、テストワークアカウントを作成できます。

    [テストワークアカウントの作成]ダイアログでは、次のことができます。

    • 1つのテストワークアカウントを作成する
    • 作成されるテストワークアカウントにデフォルトでアプリをインストールするかどうかを選択する
    • 呼び出しで使用するグラフAPIバージョンを選択する
    • テストユーザーごとにアプリのアクセス許可を付与する

    テストユーザーが作成されると、ワークアカウントの表に表示されます。

    ワークアカウントでテストする

    テストワークアカウントを使ってアプリをテストするには、Facebookログインでテストワークアカウントの認証情報を使用し、アプリに必要なアクセス許可を付与します。テストユーザーに代わってアプリのアクセス許可を付与するには、ワークアカウント表の対象テストユーザーの行にある、[オプション]列の省略記号アイコン(•••)をクリックします。省略記号アイコンをクリックすると、テストユーザーがアプリに付与したアクセス許可の編集、テストユーザー用のユーザーアクセストークンの生成、テストユーザーのアカウントへのログインというオプションが表示されます。

    テストワークアカウントにログインした後、アプリの統合が適切に行われるために必要なビジネスアセットを割り当てることをおすすめします。割り当てるには、ビジネス設定に移動して、テストユーザーのビジネスマネージャアカウントと、テストユーザーに割り当てられているアセット(ページ、広告アカウント、商品カタログなど)を管理します。

    テストユーザーの移行のシミュレーション

    Facebookユーザーが仕事用アカウントに移行した際に発生するビジネスアクセス許可の変更をシミュレーションし、ユーザー移行によるアプリへの影響をテストすることができます。この機能を使用するには、Facebookテストユーザーにアクセスし、[オプション]列の省略符号アイコン(•••)をクリックし、[仕事用アカウントにビジネスアクセス許可を移行]をクリックして、指示に従ってください。

    この機能を使用するには、以下の前提条件を満たす必要があります。

  • Facebookテストユーザーを作成する
  • Facebookテストユーザーがアセット(ページやカタログなど)のあるビジネスアカウントにアクセスできることを確認する
  • Facebookテストユーザーがビジネスデータにアクセス許可を付与していることを確認する
  • 仕事用アカウントのテストユーザーを作成して、ビジネスアクセス許可を移行する
  • 移行完了後、次のことを行えます。

  • 仕事用アカウントでログインして、ユーザーオンボーディングエクスペリエンスをプレビューする
  • Facebookテストユーザーのユーザーアクセストークンでuser_access_expire_timeフィールドを取得する
  • ユーザーのオンボーディングエクスペリエンス

    Metaは、支障をできるだけ抑えるため、30日間の猶予期間を設けています。その期間中は、Facebookユーザーによって生成されたユーザー/ページアクセストークンは、サードパーティのAPIを介してビジネスアセットにアクセスできます。30日間の猶予期間内に、ユーザーはサードパーティ技術提供者の機能で再認証を行い、技術提供者が保管するための新しいアクセストークンを作成する必要があります。「再認証」することで、ユーザーはMWAの識別情報で認証を行い、同じビジネスアセットを再選択し、ビジネス許可を新しいアクセストークンの形で技術提供者に渡す必要があります。30日間の猶予期間を過ぎてもユーザーが認証を行わない場合や、個人用FBアカウントの使用を続けている場合、API呼び出しは失敗するようになります。

    ビジネスマネージャに30日間のカウントダウンがバナー表示され、ユーザーがワークアカウントで再認証することが必要なサードパーティアプリがすべて表示されます。サードパーティアプリがシステムユーザーアクセストークン(SUAT)のみを使用している場合、バナーは表示されません。Metaワークアカウントへの移行はシステムユーザーに影響しないためです。

    30日間のバナーとポップアップ

    マイグレーションAPIとトラブルシューティング

    MetaワークアカウントのマイグレーションAPIとトラブルシューティングのドキュメントには、移行するユーザーとビジネスアカウントやそれらの有効期限、およびそれらがワークアカウントかどうかを判別する方法が記載されています。is_work_accountは、ユーザーがワークアカウントを使用しているかどうかを示すブーリアンの返りタイプです。これは、Userオブジェクトにあります。user_access_expire_timeフィールドは、特定のアセットへのユーザーのアクセスがいつ取り消されるかを示すタイムスタンプです。このタイムスタンプを過ぎると、ユーザーはアセットに対する管理アクセス権を失います。これらの特定のアセットにアクセスする必要があるFacebookユーザーのアクセストークンを使用したその後のAPI呼び出しでは、アクセス許可エラーが返されるようになります。user_access_expire_timeは以下のオブジェクトにあります。

    制限

    user_access_expire_timeには特定の制限があります。これは、ユーザーが移行するビジネスのビジネスアクセス許可により明示的にアセットにアクセスできる場合のみ、そのアセットの有効期限データを返します。例えば、Facebookユーザーが移行するビジネスアカウントによりページの管理者である場合に限り、このデータはタイムスタンプを返します。移行するビジネスが所有しているものの、そのユーザーに割り当てられていないページの場合は、タイムスタンプが生成されません。

    おすすめの用途

    このデータをさまざまなシナリオで使用して、アプリケーションの機能を強化したり、エンドカスタマーに生じる可能性のある認証やアクセス許可の問題を事前に減らしたりすることができます。
    • 顧客から受け取ったアクセストークンがワークアカウントに属しているかどうかをデバッグする
    • ビジネスアセットへのユーザーのアクセス期限が切れるタイミングをデバッグする
    • 特定のアセットへのアクセス期限が近づいたらユーザーに通知やリマインダーを送信して、機能を使い続けるためにワークアカウントの使用の承認を促す
    • 期限切れのアクセスを検出し、適切なエラーメッセージを表示するかビジネスアセットにアクセスできるワークアカウントに接続するための指示をユーザーに出して、APIエラーを処理する

    グラフAPI呼び出しの例

    1.is_work_accountステータスの取得

    リクエスト
    GET /v17.0/{user-id}?fields=is_work_account
    
    応答
    {
      "id": "{user-id}",
      "name": "Romane Richter"
      "is_work_account": true
    }
    2.30日の期間内のuser_access_expire_timeの取得

    リクエスト
    GET /v17.0/{object-id}?fields=user_access_expire_time&access_token=<access-token>
    応答
    {
       "user_access_expire_time": "2023-06-23T12:00:00+00:00"
    }
    3.移行前にフィールドにリクエストすると空のデータが返される

    リクエスト
    GET /v17.0/{object-id}?fields=user_access_expire_time&access_token=<access-token>
    応答
    {}
    
    4.移行後(`user_access_expire_time`後)の30日間をリクエストすると、エラーがスローされる可能性がある

    リクエスト
    GET /v17.0/{object-id}?fields=user_access_expire_time&access_token=<access-token>
    応答
    {
      "error": {
        "message": "(#100) Object does not exist, cannot be loaded due to missing permission or reviewable feature, or does not support this operation. This endpoint requires the 'pages_read_engagement' permission or the 'Page Public Content Access' feature or the 'Page Public Metadata Access' feature. Refer to https://developers.facebook.com/docs/apps/review/login-permissions#manage-pages, https://developers.facebook.com/docs/apps/review/feature#reference-PAGES_ACCESS and https://developers.facebook.com/docs/apps/review/feature#page-public-metadata-access for details.",
        "type": "OAuthException",
        "code": 100,
        "fbtrace_id": "AZdHiJUBflrZnE-RNKrHAah"
      }
    }
    

    アクセス許可とエラー

    user_access_expire_timeにアクセスしてAPI呼び出しを行う開発者は、これらのオブジェクトを読み込むのに必要なアクセス許可が付与されていることを確認してください。提供されている例では、object-idがビジネスオブジェクトIDを参照している場合、そのユーザーがオブジェクトを読み込むには、少なくともbusiness_managementアクセス許可を付与されている必要があります。詳細については、こちらをご覧ください。
    有効期限を過ぎてからアセットにアクセスしようとすると、API応答は100およびタイプOAuthException.の一般的なエラーします。これは、ユーザーがアセットにアクセスできなくなったために、API経由でオブジェクトにアクセスできなくなったことを示します。

    参考情報

    技術提供者の統合に関するよくある質問を参照してください。