2013-02-12 124 views
0

即時通訊尋找檢索我所有的朋友家鄉,我使用類似的PHP作爲檢索他們的名字。我認爲代碼即時使用應該工作,但我認爲,因爲一些用戶沒有設置一個家鄉它不會工作,並說每個參數是無效的(儘管這可能是完全錯誤的)。Facebook API - 獲取朋友家鄉

時只需在URL輸入到Web瀏覽器,我得到以下結構:

{ 
    "id": "z", 
    "friends": { 
     "data": [ 
     { 
      "name": "x", 
      "hometown": { 
       "id": "x", 
       "name": "x" 
      }, 
      "id": "x" 
     }, 

然後重複在好友列表中的每個用戶,雖然朋友沒有家鄉以下省略:

"hometown": { 
      "id": "x", 
      "name": "x" 
       }, 

要檢索的名字和生日我用下面的PHP:


$response2 = curl_exec($ch2); 
$user2 = json_decode($response2, true); 
$user3=$user2{'friends'}; 
$user4=$user3['data']; 
echo ("<h2>Friend List</h2><br>"); 
foreach($user4 as $friend) { 
    echo $friend["name"] . "<br />" . $friend["birthday"] . "<br /><br />"; 
    } 
} 

PS我知道變量名不是特別好,但我會改變他們一旦我想出了什麼即時通訊爲家鄉做!

非常感謝任何幫助提前。

回答

0

不是每個人都可以將他們的家鄉或位置提供給他們的朋友。在這種情況下,您將無法通過API獲取數據並需要檢查該數據。

爲了獲得更多的數據而不僅僅是查詢家鄉,我們還讀出current_location。

通過圖形API,你可以使用這個資源:如果您正在使用FQL https://graph.facebook.com/me/friends?fields=hometown,location

你可以使用這樣的查詢:

SELECT uid, first_name, last_name, current_location, hometown_location, friend_count, mutual_friend_count FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = me()) 

記住,你需要的friends_locationfriends_hometown權限讀取這些領域。

+0

感謝您的回覆,根據我的理解,您無法通過使用'我/朋友/'訪問用戶位置或家鄉,而且您必須使用'user_id?fields = friends' 我不使用FQL,但不願意使用只要返回家鄉,那麼想法就是在谷歌地圖上顯示家鄉 – thrash 2013-02-12 18:14:04

+0

/me /如果您詢問查詢字符串中的字段,朋友將返回位置和家鄉。您可以在[圖形API資源管理器](https://developers.facebook.com/tools/explorer/?method=GET&path=me%2Ffriends%3Ffields%3Dname%2Chometown%2Clocation)中查看它。 (按「獲取訪問令牌」並給出「friends_location」和「friends_hometown」的權限。) – mgw 2013-02-12 20:30:21

+0

順便說一句,如果您使用Google地圖的家鄉,則可以使用Facebook返回的ID並進行另一個查詢以獲取返回地點的經度和緯度。威尼斯的例子:[https://graph.facebook.com/110339052328061](https://graph.facebook.com/110339052328061) – mgw 2013-02-12 20:32:10