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

Facebook Graph API通过PSID获取用户姓名异常问题求助

解决Facebook Messenger无法获取普通用户姓名的问题

问题核心

已配置Webhook接收用户消息,能正常获取PSID,但仅主页所有者的账号能通过Graph API获取姓名,其他用户请求返回NULL,已具备Business Asset User Profile Access高级权限、应用处于Live模式、已授予Messaging权限。

排查与解决步骤

1. 先捕获API请求的具体错误

你的代码未处理HTTP请求错误,当API返回非200状态码时,file_get_contents返回的不是有效JSON,json_decode就会返回NULL。修改代码添加错误捕获,明确失败原因:

function get_basic_info($id, $access) {
    $url = "https://graph.facebook.com/{$id}?fields=first_name,last_name,profile_pic&access_token={$access}";
    // 启用错误捕获
    $context = stream_context_create([
        'http' => [
            'ignore_errors' => true
        ]
    ]);
    $response = file_get_contents($url, false, $context);
    
    // 提取HTTP状态码
    $statusCode = 200;
    foreach ($http_response_header as $header) {
        if (strpos($header, 'HTTP/') === 0) {
            $statusCode = (int)substr($header, 9, 3);
            break;
        }
    }
    
    if ($statusCode !== 200) {
        // 记录错误信息到日志,或直接输出调试
        error_log("Facebook API 请求失败: 状态码 {$statusCode}, 响应内容: {$response}");
        return null;
    }
    
    $info = json_decode($response, true);
    return $info;
}

运行后查看日志,会得到具体错误(比如Permission denied、Invalid PSID等),这是定位问题的关键。

2. 验证页面Access Token的权限有效性

  • 使用Graph API调试工具检查你的页面AccessToken,确认它包含pages_messaging和business_asset_user_profile_access权限,且Token未过期。
  • 确保生成Token时选择的是对应接收消息的企业主页,而非其他主页。

3. 确认用户交互的合规性

  • 对于欧盟等受隐私法规约束地区的用户,若用户在Facebook隐私设置中禁止第三方应用获取个人信息,你将无法获取其姓名。需确保你的应用已完善隐私政策,并符合当地合规要求。
  • 普通用户首次发消息后,主页需至少回复一条消息(哪怕是自动回复),确保触发权限获取用户基本信息的流程。

4. 检查Business Asset User Profile Access的配置

  • 确认高级权限Business Asset User Profile Access已正确关联到你的应用和目标企业主页:在Business Manager中,确保应用与主页属于同一商业资产,且权限已授予给应用的开发者角色。
  • 若你的应用刚升级到Live模式或刚获取高级权限,可能需要等待1-2小时让权限生效。

5. 确认PSID的有效性

确保你传入的$sender是有效的用户PSID,而非页面ID或其他类型的ID。Webhook返回的entry.messaging.sender.id才是正确的用户PSID。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.06 13:41:24