You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Facebook Graph API与Laravel Socialite获取商家页面信息

问题描述

我使用Laravel Socialite包调用Facebook Graph API,希望获取关联普通Facebook账号的商家页面或商家账户信息。目前通过端点 https://graph.facebook.com/user_id/accounts 可以正常获取用户及相关页面信息,但尝试获取所有商家页面/账户时遇到问题:

  • 调用 /user-id/business_users 返回空数据
  • 调用 /user-id/businesses 出现 (#100) Missing Permission 错误

解决方案

1. 先理清三个端点的差异

  • /user-id/accounts:返回用户管理的Facebook公共主页,这正是你已经能用的接口,普通商家页面的核心信息(名称、分类、页面访问令牌等)都在这里。
  • /user-id/business_users:返回用户在**商务管理平台(Business Manager)**中的身份信息,只有当用户加入了某个商务管理平台时才会返回数据,空结果说明当前用户未关联任何商务管理平台。
  • /user-id/businesses:返回用户拥有或管理的商务管理平台账户,这个接口需要特定权限才能调用。

2. 解决 /user-id/businesses 的权限错误

要调用这个接口,你的应用必须获取 business_management 权限,操作步骤如下:

  • 在Laravel Socialite生成授权链接时,添加该权限:
return Socialite::driver('facebook')
    ->scopes(['business_management', 'pages_show_list']) // 按需补充其他必要权限
    ->redirect();
  • 如果是公开上线的应用,需要将 business_management 权限提交Facebook审核;测试阶段使用测试用户的话,直接授权即可生效。

3. 明确需求:商家页面还是商务管理账户

  • 如果只是要获取用户管理的商家页面,/user-id/accounts 完全够用,返回的每个Page对象已经包含商家运营所需的核心信息。
  • 如果确实需要获取商务管理平台账户,需确认:
    • 用户已加入至少一个商务管理平台
    • 应用已申请并通过 business_management 权限审核
    • 当前访问令牌包含该权限(可调用 /debug_token 端点验证)

4. 实用调试技巧

  • 验证令牌权限:调用 https://graph.facebook.com/debug_token?input_token=你的访问令牌&access_token=APP_ID|APP_SECRET 查看令牌包含的权限列表
  • 检查用户状态:让用户登录Facebook商务管理平台,确认自己是否属于某个商务管理平台
  • 先用Graph API Explorer测试:在Facebook官方工具中先验证请求是否成功,再迁移到代码中

内容的提问来源于stack exchange,提问作者Nir ina

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.29 11:52:20