用户名不是用户 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 用户 table 字段(也许它们已经改变了)。
- 已尝试 'SELECT *' - 其他错误(不允许)
我在 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);
}
暂时有效...
在过去的几年里,我一直在使用 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 用户 table 字段(也许它们已经改变了)。
- 已尝试 'SELECT *' - 其他错误(不允许)
我在 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);
}
暂时有效...