我的web应用程序构建了Facebook图形API的批量请求。该批次是通过进行第一次API调用来获取用户的朋友。然后,我遍历好友列表并为每个(为该用户的特定访问令牌)添加一个特定的请求,并将每个请求添加到批处理中。所以它最终是两个API调用。不幸的是,它真的很慢,我听说FQL请求更快。将Facebook API批量请求转换为FQL多查询
所以我的问题是,我可以用FQL做到这一点吗?我已阅读the documentation,但我无法弄清楚我将如何返回,例如,朋友的工作历史记录(需要每个朋友的访问令牌)的所有朋友都带有一个FQL查询。这可能吗?显然,我可以建立一个批量请求的FQL请求,但这会让我回到我开始的地方。
更新: 我已经做了一些测试,FQL肯定比批处理请求更快。我FQL multiquery看起来是这样的:
$multiQuery = array(
"query1"=>"SELECT uid2 FROM friend WHERE uid1 = me()", //LIST OF FRIEND IDs
"query2"=>"SELECT uid, name, work, education, is_app_user FROM user WHERE uid IN (SELECT uid2 FROM #query1)", //FRIEND PROFILES
"query3"=>"SELECT uid2 FROM friend WHERE uid1 IN (SELECT uid FROM #query2 WHERE is_app_user=1)",
"query4"=>"SELECT uid, name, work, education FROM user WHERE uid IN (SELECT uid2 FROM #query3)"
);
$multiQueryResult = $facebook->api(array(
'method' => 'fql.multiquery',
'queries' => $multiQuery
));
var_dump($multiQueryResult);
查询工作,但这里有两个问题:
QUERY3返回所有用户ID,不只是谁已经授权 我的应用程序的人。
query4不返回工作/教育领域......大概是因为 API请求被称为当前用户的 访问令牌(而不是从QUERY3特定用户的)。我已将授权用户的访问令牌存储在数据库中,但我不知道在此情况下是否可以使用它们。
这可以用FQL来完成吗?我可以在FQL多查询中定义唯一的访问令牌吗?
你能弄清楚这一点吗?我试图让它工作。 – dang