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

Facebook SDK: client_pages调用返回PENDING,已授权仍无法创建客户页面广告

问题根源

你调用的/{BUSINESS_ID}/client_pages接口的作用是请求将用户的页面纳入你的Business Manager平台作为客户页面管理,这和用户给你的App授权ads_management是完全独立的两个流程:

  • 用户给App授权:是允许你的App代表用户执行广告操作
  • 页面关联到Business Manager:是请求用户把页面的管理权限共享给你的企业账号,这属于跨主体的权限转移,Facebook的安全机制要求用户手动确认,所以必然返回PENDING,哪怕用户已经给了App权限。

而你的需求是程序化创建客户页面的广告,根本不需要走这个Business Manager关联流程。

正确操作流程

你应该用用户授权后得到的User Access Token来操作,而不是你的业务系统用户Token,具体步骤如下:

  1. 确认前端授权的权限正确
    你当前的FB.login权限参数是对的:

    FB.login(response => { console.log('FB.login ', response); }, { 
      scope: 'ads_management,pages_show_list,business_management,pages_manage_ads', 
      return_scopes: true 
    });
    

    用户授权后,前端会拿到一个短期的User Access Token,建议后端将其换成长期User Access Token(有效期60天),方便后续持久化操作。

  2. 获取页面级Access Token
    广告操作通常需要页面级的Token(权限继承自用户的授权),用用户的Token调用以下接口获取:

    curl "https://graph.facebook.com/v8.0/{PAGE_ID}?fields=access_token&access_token={USER_ACCESS_TOKEN}"
    

    这里的{PAGE_ID}是用户的页面ID,{USER_ACCESS_TOKEN}是用户授权后的Token(短期或长期均可)。

  3. 用页面Token创建广告
    拿到页面Token后,就可以直接调用Facebook Ads API创建广告了,比如创建广告系列的示例:

    curl -X POST "https://graph.facebook.com/v8.0/act_{AD_ACCOUNT_ID}/adcampaigns" \
      -d "name=客户页面推广活动" \
      -d "objective=POST_ENGAGEMENT" \
      -d "status=PAUSED" \
      -d "access_token={PAGE_ACCESS_TOKEN}"
    

    注:{AD_ACCOUNT_ID}可以通过用户的Token调用/me/adaccounts接口获取关联的广告账户,或者如果是页面绑定的广告账户,也可以通过/{PAGE_ID}/adaccounts获取。

额外注意事项
  • 如果需要长期维护广告,记得把短期User Access Token换成长期Token(通过/oauth/access_token接口,用App ID、App Secret和短期Token换取)
  • 页面Token的有效期和用户Token一致,长期用户Token对应的页面Token也是长期的
  • 只有当你需要代运营用户页面(比如长期管理页面内容、广告)时,才需要走client_pages关联流程,且必须用户手动批准,这个流程无法跳过

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.09 17:57:58