Facebook Messenger API:如何通过编程取消用户对主页的订阅?
编程取消Facebook用户订阅的完整方案
当然可以通过编程方式让用户彻底停止接收你主页机器人的所有消息——包括Broadcasts API发送的广播,下面是具体的实现思路和步骤:
1. 用Facebook Graph API直接标记用户取消订阅
Facebook官方提供了Graph API接口来管理用户的订阅状态,调用POST /{user-id}/unsubscribe接口(需要你的主页拥有pages_messaging权限),就能让用户彻底脱离该主页的消息列表,无论是Send API的主动消息还是Broadcasts的广播,都不会再推送给他们。
- 调用示例(Python伪代码):
import requests def unsubscribe_user(page_access_token, user_psid): # 注意这里要用用户的Page-Scoped ID(PSID) api_url = f"https://graph.facebook.com/v18.0/{user_psid}/unsubscribe" request_params = { "access_token": page_access_token } response = requests.post(api_url, params=request_params) return response.json()
调用这个接口后,用户的订阅状态会被Facebook后台更新,从根本上阻止所有来自该主页机器人的消息推送。
2. 结合数据库标记做双重校验
你之前提到的在数据库中标记用户为已取消订阅的方式可以保留,作为额外的保障:
- 在发起任何消息请求(包括广播)前,先检查数据库中的用户状态,如果标记为取消订阅,直接跳过发送流程;
- 定期或在发送前调用
GET /{user-id}/subscribed接口,验证用户在Facebook端的实际订阅状态,确保和数据库标记一致,避免出现状态不同步的问题。
3. 关键注意事项
- 权限要求:必须确保你的应用已经获取了对应主页的
pages_messaging权限,否则无法调用订阅管理相关接口; - 用户ID类型:一定要使用用户的Page-Scoped ID(PSID),这是用户在你的主页下的唯一标识,不能用全局Facebook ID;
- API版本:建议使用最新的Graph API版本(比如v18.0及以上),旧版本接口可能存在功能限制或被废弃的情况。
这样操作后,用户就不会再收到任何来自你主页机器人的消息了,包括Broadcasts API发送的广播内容。
内容的提问来源于stack exchange,提问作者user1076731
相关产品推荐
相关产品推荐

