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

如何手动使用Python调用Facebook Graph API?

手动编写Python代码调用Facebook Graph API(无需第三方Facebook SDK)

核心思路是直接通过HTTP请求调用Facebook Graph API的端点,用Python内置的urllib库或者通用HTTP库requests即可,无需依赖专门的Facebook非官方SDK。

准备工作

  • 获取有效的Access Token:在Facebook开发者平台生成,根据需求选择用户令牌(用于访问用户数据)或应用令牌(用于访问应用级数据),注意申请对应权限(比如读取用户邮箱需要email权限)。
  • 确认API版本:使用Facebook最新的Graph API版本(比如v18.0),避免版本过时导致兼容性问题。

示例1:用内置urllib发送GET请求(读取数据)

比如获取当前用户的基本信息:

import urllib.request
import urllib.error
import json

# 替换为你的实际凭证
ACCESS_TOKEN = "your_access_token"
TARGET_ID = "me"  # 可替换为具体用户/页面ID

# 构造请求URL
api_url = f"https://graph.facebook.com/v18.0/{TARGET_ID}?fields=id,name,email&access_token={ACCESS_TOKEN}"

try:
    # 发送请求并解析响应
    response = urllib.request.urlopen(api_url)
    response_data = json.loads(response.read().decode("utf-8"))
    
    print("获取到的数据:")
    print(json.dumps(response_data, indent=2, ensure_ascii=False))
except urllib.error.HTTPError as e:
    # 捕获并处理API错误
    error_info = json.loads(e.read().decode("utf-8"))
    print(f"请求失败:{error_info['error']['message']}(错误代码:{error_info['error']['code']})")

示例2:用urllib发送POST请求(创建数据)

比如在Facebook页面发布帖子:

import urllib.request
import urllib.parse
import json

ACCESS_TOKEN = "your_access_token"
PAGE_ID = "your_page_id"

api_url = f"https://graph.facebook.com/v18.0/{PAGE_ID}/feed"
# 构造POST参数
post_data = {
    "message": "这是通过手动编写的Python代码发布的测试帖子",
    "access_token": ACCESS_TOKEN
}
# 编码参数为URL格式
encoded_data = urllib.parse.urlencode(post_data).encode("utf-8")

try:
    # 创建POST请求对象
    request = urllib.request.Request(api_url, data=encoded_data, method="POST")
    response = urllib.request.urlopen(request)
    result = json.loads(response.read().decode("utf-8"))
    print(f"帖子发布成功,帖子ID:{result['id']}")
except urllib.error.HTTPError as e:
    error_info = json.loads(e.read().decode("utf-8"))
    print(f"发布失败:{error_info['error']['message']}")

示例3:用requests库简化请求(可选)

如果你可以使用通用HTTP库requests(并非针对Facebook的专用SDK),代码会更简洁:

import requests
import json

ACCESS_TOKEN = "your_access_token"
TARGET_ID = "me"

api_url = f"https://graph.facebook.com/v18.0/{TARGET_ID}"
params = {
    "fields": "id,name,email",
    "access_token": ACCESS_TOKEN
}

response = requests.get(api_url, params=params)
if response.status_code == 200:
    print(json.dumps(response.json(), indent=2, ensure_ascii=False))
else:
    error_info = response.json()
    print(f"请求失败:{error_info['error']['message']}")

关键注意事项

  • 权限匹配:不同API端点需要对应权限,比如发布页面帖子需要pages_manage_posts权限,申请令牌时需勾选。
  • 令牌管理:短期用户令牌有效期通常为1小时,长期令牌需定期刷新,避免失效。
  • 速率限制:Facebook API有请求频次限制,避免短时间内大量请求导致限流。
  • 错误处理:务必捕获HTTP错误,根据返回的错误信息调整请求参数或权限。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.23 08:59:58