调用Facebook Graph API遇「Provide valid app ID」错误求助
解决Meta Graph API返回"(#200) Provide valid app ID"错误的方法
问题根源分析
这个错误并非由page_id参数导致,而是以下常见问题引发:
- GET请求参数传递方式错误:你用
data传递access_token,但GET请求的参数需放在URL查询串中,而非请求体 - Access Token的类型或权限不匹配:比如使用用户令牌而非页面令牌,或者令牌缺少必要权限
具体修复步骤
1. 修正请求参数传递方式
修改cek_subs_app_webhook函数,将data替换为params——GET请求的参数必须通过URL查询字符串传递:
import requests def cek_subs_app_webhook(page_id, access_token): url = f"https://graph.facebook.com/{page_id}/subscribed_apps" params = { 'access_token': access_token } # 用params传递GET参数,而非data response = requests.get(url, params=params) return response.json()
2. 验证Access Token的有效性与权限
- 确保使用页面访问令牌:页面令牌专门用于操作页面资源,用户令牌无法直接访问页面的
subscribed_apps端点 - 检查令牌权限:至少需包含
pages_show_list权限,可在Meta Graph API调试工具中验证令牌的权限和有效性 - 确认令牌关联的应用ID有效,且该应用已安装到目标页面
3. FastAPI代码简化(可选)
FastAPI支持直接返回字典,无需手动包装JSONResponse,简化代码:
@router.get("/cek-subs-app/{page_id}") async def check(page_id: str, access_token: str = Header(..., description="meta token")): return cek_subs_app_webhook(page_id, access_token)
验证方法
修复后可通过curl测试接口:
curl -H "access_token: YOUR_PAGE_ACCESS_TOKEN" http://your-fastapi-url/cek-subs-app/YOUR_PAGE_ID
内容的提问来源于stack exchange,提问作者Dimas Surya
相关产品推荐
相关产品推荐

