如何获取通过Facebook Login for Business登录应用的企业账户ID?
获取Facebook Login for Business客户的Business Manager账户信息
问题背景
我开发了一个集成Facebook Login for Business的应用,认证流程为:先获取授权码,再兑换为System User Access Token(SUAT)。
- 登录成功返回载荷:
{"authResponse": {"userID": null,"expiresIn": null,"code": "AQA..."},"status": "connected"}
- 兑换SUAT后的返回载荷:
{"data": {"access_token": "EAAT...","token_type": "bearer"}}
需要用户登录后自动化内部流程,但单个客户可能拥有多个Business Manager,因此需要获取客户的Business Manager账户ID、用户名、邮箱来精准识别登录账户。但调用debug_token端点返回的user_id是我方Business Manager关联的系统用户ID,无法满足需求:
{"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"}}
解决方案
1. 补充必要的权限请求
当前授权的scopes仅包含pages_show_list和public_profile,不足以获取Business Manager相关信息。需要在获取授权码的步骤中,新增business_management权限(若需获取邮箱还需email权限)。
2. 调用Graph API获取目标信息
使用兑换得到的SUAT,调用以下Graph API端点:
获取客户关联的所有Business Manager账户
调用/me/businesses端点,返回结果包含每个BM的ID、名称等关键信息:
{ "data": [ { "name": "客户的Business Manager名称", "id": "1234567890" // 这就是需要的Business Manager账户ID } ] }
获取系统用户的用户名、邮箱
调用/me?fields=name,email端点,返回系统用户的基础信息:
{ "name": "系统用户名称", "email": "user@example.com", "id": "系统用户ID" }
注意事项
- 确保你的应用已在Facebook开发者平台中获得
business_management权限的审核通过,否则无法获取相关数据。 - SUAT的权限范围由授权时请求的scopes决定,必须在用户授权阶段明确申请所需权限。
内容的提问来源于stack exchange,提问作者ErevuDeveloper
相关产品推荐
相关产品推荐

