如何从Instagram消息范围ID获取真实账号ID
解决Instagram消息Webhook接收者ID关联真实账号ID的问题
核心方案:提前存储IG账号与关联Page的映射关系
Webhook返回的接收者ID(消息范围ID)本质是该Instagram账号绑定的Facebook企业主页ID,你可以在用户授权阶段提前获取并存储两者的映射,后续收到Webhook时直接匹配:
用户授权后获取关联Page ID
当用户通过Instagram OAuth授权你的应用并拿到真实IG账号ID(如1234)后,调用Instagram Graph API端点:GET /{ig_user_id}?fields=connected_pages该请求会返回该IG账号绑定的所有Facebook Page信息,提取其中的Page ID(如5678),将
IG账号ID <-> Page ID的映射关系存入数据库。Webhook事件匹配真实IG账号
收到消息Webhook时,取出事件中的接收者ID(即Page ID 5678),直接在数据库中查询对应的IG账号ID(1234)即可完成关联。
特殊情况处理
如果你的Instagram账号未绑定Facebook Page,消息Webhook的接收者ID会是该账号的消息范围IG ID,此时直接调用:
GET /{message_scoped_ig_id}?fields=id
用用户授权时获取的访问令牌请求该端点,就能返回真实的IG账号ID。
权限说明
确保你的应用在OAuth授权流程中请求了pages_show_list权限,否则无法通过connected_pages字段获取关联Page信息。
内容的提问来源于stack exchange,提问作者lerxstrulz




