如何为测试用户/商务账户启用Facebook Business API
Facebook商务应用审核测试用户调用目录API权限报错问题
我正在开发一款Facebook商务应用,可自动为商务账户上传产品目录,目前正准备提交应用审核。为此我需要提供一个测试用户,用于演示我申请的所有API权限范围,即:
business_managementcatalog_management
目前整套工作流对在我的应用中拥有角色的真实用户可正常运行。
对于本身是自有商务账户管理员的测试用户,Facebook登录、测试用户授权、获取测试用户商务账户列表等流程均可正常运行,但当我调用Business API接口 /v12.0/<test_business_ID>/owned_product_catalogs 发送POST请求创建目录时,收到如下响应:
Status: 400 Response: { "error": { "message": "(#100) Missing Permission", "type": "OAuthException", "code": 100, "fbtrace_id": "*******" } }
使用测试用户的令牌在Graph API浏览器中向 /<test_business_ID>/owned_product_catalogs 发送GET请求时,收到如下报错:
{ "error": { "message": "(#200) This application has not been approved to use this API.", "type": "OAuthException", "code": 200, "fbtrace_id": "*******" } }
而如果将 <test_business_ID> 替换为与我的应用关联的真实商务账户ID,请求可正常执行(返回空列表)。
我已尝试多种方案为测试用户的商务账户授予应用权限,但均未成功,包括:
- 将应用从我的真实商务账户中移除,归属到测试商务账户下
- 邀请测试用户加入我的真实商务账户
- 邀请测试商务账户作为合作伙伴接入我的真实商务账户
- 邀请真实商务账户作为合作伙伴接入测试商务账户
我也了解过沙盒账户和系统用户相关方案,但不想使用系统用户,因为我希望任意Facebook商务管理员都可以通过Facebook登录无缝将我的应用关联到其商务账户。
解决方案
报错核心原因是:未完成审核的应用,仅能对开发者账号下创建的沙盒商务资产调用全量Business API,测试用户自动生成的独立测试商务账户不在应用的可调用白名单内,你之前尝试的跨账户关联、归属转移操作无法突破这个底层限制,按以下步骤操作即可修复:
- 弃用测试用户默认生成的独立测试商务账户
进入Facebook开发者后台「应用面板-测试用户」板块,选定用于审核演示的测试用户,点击「管理测试账户」,手动为该测试用户创建归属到你开发者主体下的沙盒测试商务账户,不要使用测试用户注册时自动生成的独立测试商务账户。 - 配置沙盒商务账户权限
沙盒商务账户创建完成后,进入商务管理平台沙盒环境的设置页:- 将选定的测试用户添加为该沙盒商务账户的完整管理员
- 在「集成-应用」板块,手动将待审核应用添加为该沙盒商务账户的关联应用,开通
business_management、catalog_management两个权限的调用资格
- 重新生成有效访问令牌
清除测试用户的历史授权记录,重新触发Facebook登录授权流程,确认授权弹窗中两个权限均已勾选,用新生成的用户访问令牌调用目录接口,即可正常执行查询、创建操作。
注意事项
- 提交审核时,在演示说明里明确标注使用的是沙盒测试商务账户,附上测试用户登录凭证、沙盒商务账户ID即可,Facebook审核员默认拥有沙盒环境访问权限,不会因为使用沙盒资产打回申请。
- 该配置完全模拟真实商务管理员首次登录、授权应用关联自有商务账户的完整路径,和应用上线后普通用户的操作流程完全一致,不需要使用系统用户,符合你要做无缝登录关联的产品设计。
- 你之前收到的
(#200) This application has not been approved to use this API报错,本质就是独立测试商务账户没有和待审核应用做绑定,只有开发者主体下创建的沙盒商务资产,会默认给未过审应用开放全量API调用权限。
内容的提问来源于stack exchange,提问作者shortend
相关产品推荐
相关产品推荐

