Facebook应用程序的用户名请求fql或图形api

问题描述:

在我的Facebook应用程序中,我需要列出我在我的数据库中的用户(宽度他们的ids)。我需要他们的名字,照片和其他来自Facebook的细节。具体而言,我需要列出前100名用户(考虑他们在应用程序中的点数)。Facebook应用程序的用户名请求fql或图形api

我测试过它使用FQL:

$query = "select my top 100 users"; 
$result = mysql_query($query); 

// Foreach user 

while ($row = mysql_fetch_array($result)) { 

    $user_id = $row['user_id']; 
    $total_score = $row['total']; 

    $fql = "select name from user where uid=" . $user_id; 
    $param = array(
     'method' => 'fql.query', 
     'query'  => $fql, 
     'callback' => '' 
    ); 

    // Get user names through fql query 

    $fqlResult = $facebook->api($param); 
    $user_name = $fqlResult[0]['name']; 

    // Print user details, photo, name, total score.. 

} 

足够的FQL方式高效?

另一种方式?像图API:

function getName($id) { 

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

$ query =“select my top 100 users”; ???这是什么样的有趣的查询? @michalis? – 2012-03-30 13:12:11

+0

忽略此。假设我们有我们的ID。 – 2012-03-30 13:31:03

+0

确定忽略。 。 。 – 2012-03-30 13:32:43

使用其中uid = XX或UID = XX等做1次命中给Facebook与FQL,并让他们的一次。

此外,图API是与Facebook进行通信的首选方式,但您需要进一步研究以查看是否可以同时为多个用户获取详细信息。

现在想想更进一步,您不需要将access_token追加到这些具有离线访问(正在折旧)的调用中以获取信息。

我实际上正在想一个更好的方式来编写您的整个应用程序将是当用户连接到您的应用程序而不是批量过程时捕获此信息。

+0

谢谢!我会考虑最后一个! – 2012-03-30 13:32:48

+0

我同意Adam关于缓存这些信息。此外,您可以在不使用FQL查询的情况下构建用户图像URL,因此不需要缓存图像URL。 – 2012-03-30 14:40:39

+0

但是如果一些要列出的用户没有被捕获,会发生什么?例如,用户向用户发送多个请求,如果他们接受它们在数据库中捕获的请求。但是我也应该列出并且还没有接受请求的其他用户。假设发送请求的用户看到一个包含他所调用的所有用户的列表。 – 2012-03-30 16:39:13