首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用户名不是用户表facebook的成员

用户名不是用户表facebook的成员
EN

Stack Overflow用户
提问于 2015-01-29 19:14:13
回答 3查看 2.8K关注 0票数 2

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

这一小代码:

代码语言:javascript
复制
$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);

今天,我收到了一个错误:“用户名不是用户表Facebook的成员”。

  • 我已经搜索过Facebook用户表字段(可能它们已经更改)。
  • 尝试了“SELECT*”-其他错误(不允许)

我在Facebook上发现,不久(4月),API 2.0将被关闭。反对2.1 FQL。

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

任何信息都会有帮助。

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2015-01-29 20:24:23

使用GraphAPIv2.0和更高版本不推荐使用username字段,这是正确的。我建议改用uid字段。

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

Graph中的常规“新”FQL端点是/fql?q={query},您可以使用批处理API一次触发多个请求。如果你有一个v2.0应用程序,你可以使用FQL到2016年8月7日。

看见

票数 1
EN

Stack Overflow用户

发布于 2015-01-29 19:26:58

你是对的。在APIv2.0和更高版本中删除了username字段。所以你没有办法访问它。

票数 2
EN

Stack Overflow用户

发布于 2015-01-30 21:16:46

好吧,这是我现在的解决方案..。多亏了Tobi,我选择了/fql?q=方法,所以如果有人需要的话,这里是我的代码。

代码语言:javascript
复制
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;
}

//?

代码语言:javascript
复制
$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);
} 

暂时有效..。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/28222720

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档