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

使用Facebook Graph API获取帖子点赞列表遇400错误求解决方案(C#)

解决Facebook Graph API获取点赞返回400错误的问题

问题分析

你遇到的(#12) singular statuses API is deprecated for versions v2.4 and higher错误,核心原因有两点:

  1. 你请求的3475961399339788属于旧版动态(Status)对象,Facebook在v2.4+已废弃直接通过单个Status ID调用该接口的方式,且v2.3版本早已停止服务,回退版本完全无效。
  2. 请求的权限、端点格式不符合当前Graph API的规则。

解决方案

1. 确认对象类型与权限

  • 先验证目标ID的对象类型:发送GET /3475961399339788?access_token={token}请求,查看返回结果中的type字段,确认是post、status还是其他类型。
  • 确保Access Token拥有对应权限:
    • 若为用户动态/帖子:需持有user_posts和user_likes权限
    • 若为公共主页帖子:需持有pages_read_engagement权限,且Token需关联目标主页

2. 调整API请求格式

使用Facebook当前支持的API版本(如v18.0),采用正确的端点格式:

  • 直接请求点赞列表(带总数统计):
    https://graph.facebook.com/v18.0/3475961399339788/likes?summary=true&access_token={access-token}
    
  • 或通过fields嵌套方式请求:
    https://graph.facebook.com/v18.0/3475961399339788?fields=likes.summary(true)&access_token={access-token}
    

    注意:必须使用官方当前支持的API版本,旧版本已被完全停用,无法正常请求。

3. 优化C#请求代码

替换过时的HttpWebRequest为HttpClient,同时增加错误处理以获取更详细的报错信息:

using System.Net.Http;
using System.Threading.Tasks;

internal class FacebookApiClient
{
    private readonly HttpClient _httpClient;

    public FacebookApiClient()
    {
        _httpClient = new HttpClient();
        _httpClient.DefaultRequestHeaders.AcceptEncoding.ParseAdd("gzip, deflate");
    }

    public async Task<(string Response, int StatusCode)> GetAsync(string uri)
    {
        try
        {
            var response = await _httpClient.GetAsync(uri);
            var content = await response.Content.ReadAsStringAsync();
            return (content, (int)response.StatusCode);
        }
        catch (HttpRequestException ex)
        {
            return (ex.Message, 0);
        }
    }
}

// 调用示例
var client = new FacebookApiClient();
var result = await client.GetAsync($"https://graph.facebook.com/v18.0/3475961399339788/likes?summary=true&access_token={access_token}");

4. 额外排查点

  • 验证Token有效性:发送GET /debug_token?input_token={token}&access_token={app-token}请求,检查Token的权限范围、过期时间及关联对象。
  • 确认对象隐私设置:若为用户动态,需确保动态为公开状态,或Token持有者是动态发布者/被授权查看的用户。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 13:25:16