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

如何获取无需用户重新授权的Facebook永久访问令牌?

Facebook广告账户长期访问令牌问题解决方案

为什么/me/accounts返回空数据?

你用的这个接口是用来获取**Facebook公共主页(Page)的访问令牌的,而你需要的是广告账户(Ads Account)**的权限,两者完全不相关,所以返回空数组是正常的。那篇文章里的方法只适用于主页,不适用于广告账户。

广告账户有没有“永久”访问令牌?

Facebook没有真正意义上的用户级永久令牌,用户长期令牌最多只能是60天,但可以通过以下两种方式实现无需用户每60天重新授权:

方式1:定期刷新用户长期令牌(保持60天有效期循环)

你之前刷新后过期时间没变化,大概率是因为24小时内已经刷新过一次——Facebook的规则是,同一个用户令牌每24小时只能刷新一次,哪怕你提前3天操作,只要距离上次刷新不足24小时,过期时间就不会更新。

正确的刷新步骤:

  1. 确保用户的长期令牌还在有效期内(过期前都可以刷新,建议提前1-7天操作)
  2. 调用Facebook的令牌刷新接口,需要用到你的应用ID、应用密钥和当前用户的长期令牌:
    GET /oauth/access_token?
      grant_type=fb_exchange_token&
      client_id=你的应用ID&
      client_secret=你的应用密钥&
      fb_exchange_token=用户当前的60天长期令牌
    
  3. 接口返回的access_token就是新的60天长期令牌,expires_in会重新计算为60天的秒数。

方式2:用系统用户(System User)获取永久令牌(推荐长期后台使用)

如果你的仪表盘需要长期后台访问广告报告,不需要用户手动授权,更推荐用系统用户:

  • 登录Facebook商务管理平台,创建一个系统用户(属于你的应用/商务管理平台,不是真实用户)
  • 把这个系统用户添加到目标广告账户的权限列表里,分配需要的广告报告权限(比如ads_read)
  • 在系统用户的设置页面,生成永久访问令牌(这个令牌不会过期,除非你手动吊销或者权限被移除)
  • 用这个系统用户令牌直接调用广告报告API,完全不需要用户参与授权流程。

总结

  • 不要用/me/accounts来处理广告账户权限,它只针对公共主页
  • 用户令牌最多60天,但可以每24小时以上刷新一次来循环有效期
  • 系统用户令牌是真正的永久令牌,适合长期自动化访问广告数据

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 13:30:41