2012-03-30 113 views
0

在我的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

回答

0

使用其中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