0

ユーザーのメールボックスを取得するために facebook fql を使用しています。

次のクエリはすべての値を返します。

SELECT message_id, thread_id, author_id, body, created_time, attachment, 
viewer_id FROM message WHERE thread_id = <thread_id>

私は、auther_name と viewer_name を取得したいと考えています。

現在、このトリックを使用してIDから名前を取得していますが、最初にメッセージを取得してから応答を解析して名前を取得する必要があるため、非常に遅くなります。

function getName($id) 
{ 
$facebookUrl = "https://graph.facebook.com/".$id; 
$str = file_get_contents($facebookUrl); 
$result = json_decode($str); 
return $result->name; 
} 

FQL を使用してメッセージを取得するときに名前を取得する方法を教えてください。

4

1 に答える 1

2

fql マルチクエリを使用: https://developers.facebook.com/docs/reference/rest/fql.multiquery/

$queries = array(
    'messages' => 'SELECT message_id, thread_id, author_id, body, created_time, attachment, viewer_id FROM message WHERE thread_id = <thread_id>',
    'users' => 'SELECT name FROM profile WHERE id IN (SELECT author_id FROM #messages)',
);

$param = array(
    'method'   => 'fql.multiquery',
    'queries'  => json_encode($queries),
    'callback' => ''
);

try {
    $fqlresult = $facebook->api($param);
} catch (FacebookApiException $e) {
    echo "EXCEPTION {$e->getMessage()}\n";
}
于 2012-04-18T02:15:46.573 に答える