You need to enable JavaScript to run this app. 如何通过Graph API获取Facebook主页会话消息收发双方的邮箱与头像
优惠活动
大模型
产品
解决方案
定价
更多

如何通过Graph API获取Facebook主页会话消息收发双方的邮箱与头像

Facebook Graph API 获取会话收发双方头像及邮箱最优方案

前置权限检查

  • 你使用的主页访问令牌必须已授权pages_messaging、pages_show_list权限
  • 普通用户的邮箱字段不会默认返回,仅当该用户主动给你的Facebook应用授权了email权限后才可拿到,否则邮箱字段会为空
  • 头像字段无需额外用户授权,只要能拿到用户/主页ID即可拉取

最优实现逻辑

你原有代码的问题是在循环中多次发起API请求,资源损耗大、效率低。最优方案是利用Graph API的字段展开能力,单次请求直接拉取所有需要的关联字段,大幅减少API调用次数。

优化后代码示例

import facebook

# 初始化Graph API实例
api = facebook.GraphAPI(pageAccess)

# 一次性定义所有需要的字段,直接展开发送方、收件方的头像、邮箱信息
request_fields = [
    'message',
    'id',
    'from{id,name,email,picture{url}}', # 展开发送方字段,直接拉取头像、邮箱
    'to{data{id,name,email,picture{url}}}' # 展开收件方字段,拉取对应信息
]
args = {'fields': ','.join(request_fields)}

# 拉取会话列表时直接预拉取关联消息的所有字段,无需后续单独请求
conv = api.get_object('me/conversations', fields='id,messages{'+','.join(request_fields)+'}')

for conversation in conv['data']:
    print(f"会话ID:{conversation['id']}")
    # 直接读取预拉取的消息数据
    for msg in conversation['messages']['data']:
        # 提取发送方信息
        sender = msg.get('from', {})
        sender_avatar = sender.get('picture', {}).get('data', {}).get('url')
        sender_email = sender.get('email')
        # 提取收件方信息(通常为你的主页)
        recipients = msg.get('to', {}).get('data', [])
        for recipient in recipients:
            rec_avatar = recipient.get('picture', {}).get('data', {}).get('url')
            rec_email = recipient.get('email')
        
        # 输出所有信息
        print(f"消息ID:{msg['id']}")
        print(f"消息内容:{msg.get('message')}")
        print(f"发送方头像:{sender_avatar} | 发送方邮箱:{sender_email}")
        print(f"收件方头像:{rec_avatar} | 收件方邮箱:{rec_email}")

补充说明

注意:普通Messenger用户和主页发起对话时默认不会授权邮箱权限,绝大多数场景下你无法拿到普通用户的邮箱,仅当用户通过你的应用登录并主动授权email权限时才会返回该字段。

  • 如果需要指定头像尺寸,可以修改picture字段的请求格式,比如picture.width(200).height(200){url}即可拿到固定尺寸的头像链接
  • 如果需要拉取全量历史会话,可配合limit分页参数控制单次拉取数量,避免请求超时
  • 该方案相比原有实现可减少90%以上的API调用次数,请求效率提升非常明显

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.15 23:06:05