joe*_*ish 9 json facebook facebook-graph-api
我正在使用Facebook Graph API,我想知道是否还有一个电话中的所有用户及其当前状态列表?
我基本上想要与https://graph.facebook.com/me/friends相同的结果,但每个对象包含当前状态.
谢谢你的帮助!
编辑:
这是一些澄清.如果https://graph.facebook.com/me/friends?access_token=...
得到我这个:( AKA我所有朋友的名单)
{
"data": [
{
"name": "Foo",
"id": "1"
},
{
"name": "Bar",
"id": "2"
},
{
"name": "Foo Bar",
"id": "3"
},
{
"name": "Bar Foo",
"id": "4"
}
]
}
Run Code Online (Sandbox Code Playgroud)
什么URL或FQL会让我这样:( AKA我所有朋友和他们的状态列表)
{
"data": [
{
"name": "Foo",
"id": "1"
"status": "This is my current status!"
},
{
"name": "Bar",
"id": "2"
"status": "This is my current status!"
},
{
"name": "Foo Bar",
"id": "3"
"status": "This is my current status!"
},
{
"name": "Bar Foo",
"id": "4"
"status": "This is my current status!"
}
]
}
Run Code Online (Sandbox Code Playgroud)
我只想拨一个电话,因为与我不同,大多数人都有100多个朋友,而且我不想只是为了获得状态而拨打100多个电话.
虽然新的Batch API应该满足您的要求,但我无法使其正常工作.它似乎仍然是马车.
现在要实现这一点fql.multiquery
,这是一个简单的例子:
<?php
$app_id = "APP_ID";
$app_secret = "APP_SECRET";
$my_url = "REDIRECT_URL";
$code = $_REQUEST["code"];
if(empty($code)) {
$dialog_url = "http://www.facebook.com/dialog/oauth?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url);
echo("<script> top.location.href='" . $dialog_url
. "'</script>");
}
$token_url = "https://graph.facebook.com/oauth/access_token?client_id="
. $app_id . "&redirect_uri=" . urlencode($my_url)
. "&client_secret=" . $app_secret
. "&code=" . $code;
$access_token = file_get_contents($token_url);
$queries = '{"query1":"SELECT uid,name FROM user WHERE uid IN(SELECT uid2 FROM friend WHERE uid1=me())","query2":"SELECT uid,message FROM status WHERE uid IN (SELECT uid FROM #query1)"}';
$multiquery = "https://api.facebook.com/method/fql.multiquery?queries=" . urlencode($queries) . "&format=json&" . $access_token;
$res = json_decode(file_get_contents($multiquery), TRUE);
$final = array();
foreach( $res[1]['fql_result_set'] as $i=>$message_arr ) {
foreach( $res[0]['fql_result_set'] as $j=>$friend ) {
if( $message_arr['uid'] == $friend['uid'] ) {
$friend['message'] = $message_arr['message'];
$final[] = $friend;
break;
}
}
}
print_r($final);
?>
Run Code Online (Sandbox Code Playgroud)
这里我们在第一个查询中获取用户ID和名称,并从第二个查询中获取状态消息.
现在,这将在第一个查询或第二个查询中返回更少的结果!因为:
break
).