有没有办法获取用于通过 Facebook Login for Business 登录应用程序的企业帐户 ID?

问题描述 投票:0回答:1

我创建了一个使用 Facebook Login for Business 的应用程序。身份验证流程获取授权代码,然后将其交换为系统用户访问令牌(SUAT)。

成功登录会返回以下有效负载:

{
    "authResponse": {
        "userID": null,
        "expiresIn": null,
        "code": "AQA..."
    },
    "status": "connected"
}

然后将其交换为系统用户访问令牌,如下所示:

{
    "data": {
        "access_token": "EAAT...",
        "token_type": "bearer"
    }
}

我希望能够在用户登录我们的应用程序后自动执行我们的内部流程。由于单个客户可以有多个业务经理,我需要了解以下详细信息:企业帐户 ID、用户名、电子邮件等,以便能够准确识别用于登录的帐户。

我尝试使用 Facebook 开发者控制台和以下端点调试访问令牌: https://graph.facebook.com/debug_token?input_token={token-to-inspect}&access_token={app-token-or-管理令牌} 这会返回如下所示的有效负载:

{
    "data": {
        "app_id": "1234567890123456",
        "type": "SYSTEM_USER",
        "application": "My App",
        "data_access_expires_at": 0,
        "expires_at": 0,
        "is_valid": true,
        "issued_at": 1234567890,
        "scopes": [
            "pages_show_list"
            "public_profile"
        ],
        "granular_scopes": [
            {
                "scope": "pages_show_list"
            }
        ],
        "user_id": "123456789012345678"
    }
}

返回的 UserID 是应用程序范围的用户 ID,并且始终映射到与我们自己的业务管理器关联的系统用户。我们想要的是刚刚登录的客户的商务管理平台帐户 ID。

facebook-graph-api facebook-javascript-sdk facebook-login
1个回答
0
投票

要获取有关用户在登录过程中选择的业务、adaccounts 和页面的信息,您可以使用系统用户访问令牌发出获取请求:

curl --request GET --url 'https://graph.facebook.com/v19.0/me?fields=accounts{name,id,business},adaccounts{name,id,account_id}&access_token=<system-user-access-token>'

响应会是这样的:

{
"accounts": {
    "data": [
        {
            "name": "My Page",
            "id": "111111111111111",
            "business": {
                "id": "111111111111111",
                "name": "My Business"
            }
        }
    ],
    "paging": {
        "cursors": {
            "before": "before",
            "after": "after"
        }
    }
},
"adaccounts": {
    "data": [
        {
            "name": "My Ads",
            "id": "act_1111111111111111",
            "account_id": "1111111111111111"
        }
    ],
    "paging": {
        "cursors": {
            "before": "before",
            "after": "after"
        }
    }
}
}
© www.soinside.com 2019 - 2024. All rights reserved.