用户名不是用户 table facebook api 的成员

Username is not a member of the user table facebook api

在过去的几年里,我一直在使用 Facebook 的 FQL,我在其中收集了有关粉丝在我的一个页面上的最后评论的数据。为此,我被迫使用 2 tables 连接。我可以在 fql.multiquery 帮助下做到这一点。

这个小代码:

$query1 = "SELECT source_id, post_id, created_time , actor_id, target_id, message FROM stream WHERE source_id = ".$page_id." AND actor_id != ".$page_id." 
ORDER BY created_time DESC
LIMIT 3";        
$query2 = "SELECT username, uid, first_name, last_name FROM user WHERE uid in (SELECT actor_id FROM #query1)";

$multiQuery = array
(
   "query1" => $query1,
   "query2" => $query2,
);

$param = array(       
   'method' => 'fql.multiquery',       
   'queries' => $multiQuery,       
   'callback' => '');       
$queryresults = $facebook->api($param);

今天我收到错误 "username is not a member of the user table Facebook API"。

我在 Facebook 上发现很快(4 月),API2.0 将被关闭。并且 2.1 FQL 已弃用。

我想用简单的方法解决这个问题。

任何信息都会有所帮助。

你是对的。 API v2.0 及更高版本中删除了用户名字段。所以您无法访问它。

username 字段因使用 Graph API v2.0 及更高版本而被弃用是正确的。我建议改用 uid 字段。

问题是您在 FQL 查询中使用了错误的端点。 fql.multiquery 解析为旧的 REST API,将于 2015 年 4 月 30 日弃用。

Graph API 中的常规 "new" FQL 端点是 /fql?q={query},您可以使用 Batch API 一次触发多个请求。如果您有 v2.0 应用程序,则可以在 2016 年 8 月 7 日之前使用 FQL。

好的,这是我现在的解决方案...感谢 Tobi,我选择了 /fql?q= 方法 如果有人需要,这是我的代码。

function getcontents($query,$access_token)
{
  $url = "https://graph.facebook.com/fql?q=".urlencode($query);
  $url .= "&access_token=".$access_token;
  $content = file_get_contents($url);
  $content = json_decode($content);

  return $content;
}

//--------

$query1 = "SELECT source_id, post_id, created_time , actor_id, target_id, message FROM stream WHERE source_id = ".$page_id." AND actor_id != ".$page_id." 
ORDER BY created_time DESC
LIMIT 3
";       

$content = getcontents($query1,$access_token);     

$actor_ids = array();
foreach ($content->data as $key => $value) 
{
  $data[$value->actor_id] = $value;
  $actor_ids[] = $value->actor_id;  
}

$query2 = "SELECT username, uid, first_name, last_name FROM user WHERE uid in (".implode(",",$actor_ids).")";  
$content = getcontents($query2,$access_token); 

foreach ($content->data as $key => $value) 
{
   $data[$value->uid] = array_merge((array) $data[$value->uid],(array) $value);
} 

暂时有效...