使用PHP的FQL批处理请求

时间:2012-03-16 17:03:04

标签: facebook-graph-api

最近我正在使用PHP处理Facebook批量请求。现在,我正在尝试获取在Facebook问题中选择选项的人的名字,但也获得他们选择的选项。使用FQL将此与简单查询的关系很难,因此我尝试将它们分开

使用此:

SELECT voter_id FROM question_option_votes WHERE option_id IN (SELECT  id from question_option WHERE question_id = "...")

AND

SELECT uid, username, ... FROM user WHERE uid IN ({result=aliasOfTheLastRequest:$.data.*.voter_id) 

但我一无所获!我知道使用批处理的请求限制是20。

$fql = 'method/fql.query?query=SELECT voter_id FROM question_option_votes WHERE option_id IN (SELECT  id from question_option WHERE question_id = "252339054834206") LIMIT 20';
$batch = array(
    array(
        'method' => 'GET',
        'name' => 'getfriends',
        'relative_url' => str_replace(' ', '+', $fql),
        'omit_response_on_success' => false // Also changed to true
    ),
    array(
        'method' => 'GET', 
        'relative_url' => 'method/fql.query?query=SELECT+uid,+username,... FROM+user+WHERE+uid+IN+({result=aliasOfTheLastRequest:$.data.*.voter_id) ' // I also tried this '?ids={result=getfriends:$.data.*.voter_id}' 
    )
);

$data = $this->facebook->api('/?batch=' . json_encode($batch) . '&access_token=' . $access_token, 'POST');

当我打印$ data时,我得到了第一个查询的数据结果,但没有得到第二个查询的数据结果。第二个我得到了空阵;并使用另一个选项:“无法指定空标识符”;所以我没有将第一个查询的结果输入第二个查询。

我做错了吗?

1 个答案:

答案 0 :(得分:1)

只需将$.data.*.voter_id替换为$.*.voter_idfql.query不会返回data个对象,只需body