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

调用Twitter API V2仅获meta数据,无法获取non_public_metrics求助

排查无法获取Twitter API V2 non_public_metrics字段的问题

核心原因

请求non_public_metrics时返回result_count: 0但public_metrics正常,本质是权限与访问范围的严格限制:

  • non_public_metrics属于私有敏感字段,仅对推文作者本人、经Twitter审核通过的企业/学术研究账号开放,第三方应用无权获取其他用户推文的该字段。
  • 若请求的users/:id/tweets中的:id不是当前授权用户的真实ID,API会直接过滤所有无法返回的推文,导致data字段缺失、result_count为0。
  • 即使访问自己的推文,也需要应用具备足够权限,且授权流程包含私有数据读取权限。

具体排查步骤

  1. 确认请求的用户ID为当前授权用户ID
    先通过/2/users/me端点获取当前授权用户的真实ID,再用该ID发起请求:

    $connection = new TwitterOAuth('CONSUMER_KEY', 'CONSUMER_SECRET', 'ACCESS_TOKEN', 'ACCESS_TOKEN_SECRET');
    $connection->setApiVersion('2');
    
    // 获取当前授权用户ID
    $userInfo = $connection->get('users/me');
    $currentUserId = $userInfo->data->id;
    
    // 使用自身ID请求包含non_public_metrics的推文
    $response = $connection->get("users/{$currentUserId}/tweets", [ 
        'tweet.fields' => 'non_public_metrics,public_metrics,text'
    ]);
    print_r($response);
    
  2. 检查应用权限与授权范围

    • 登录Twitter开发者平台,确认应用已申请Read, Write, and Direct Messages权限(基础Read-only权限无法访问私有指标)。
    • 重新生成访问令牌,确保授权流程中包含tweet.read和users.read权限(OAuth1.0a模式下需验证令牌权限覆盖私有数据读取)。
  3. 验证请求参数格式
    多字段请求时用逗号分隔,避免参数格式错误:

    'tweet.fields' => 'non_public_metrics,id,text,public_metrics'
    

补充说明

  • 若尝试获取其他用户的non_public_metrics,无论权限如何都无法实现,这是Twitter API的隐私规则限制。
  • 确认是自身账号但仍无法获取时,需检查目标推文是否为该账号发布,且账号未被限制访问私有数据。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.13 03:40:34