2013-06-20 63 views
4

我想檢索使用臉譜圖API的用戶的郵政編碼。我正在使用此代碼。代碼是在PHP中。通過臉譜圖API檢索Facebook用戶的郵政編碼

$facebook = new Facebook(array(
      'appId' => APP_ID, 
      'secret' => APP_SECRET, 
      )); 

$user = $facebook->getUser(); 
//$login_url = $facebook->getLoginUrl(array('scope' => 'email')); 
$login_url = $facebook->getLoginUrl(
      array(
       'scope'   => 'email,publish_stream,user_birthday,user_location,user_work_history,user_about_me,user_hometown' 
      ) 
    ); 
//get user basic description 
//$userInfo   = $facebook->api("/$user"); 

if ($user) { 
    try { 
    // Proceed knowing you have a logged in user who's authenticated. 
    $user_profile = $facebook->api('/me'); 
    } catch (FacebookApiException $e) { 
    error_log($e); 
    $user = null; 
    } 

在這裏,我得到$ user_profile數組,它具有除郵政編碼以外的所有信息。但我給了這個許可。有沒有辦法從Facebook獲取郵政編碼?

回答

3

如果您查看/me調用文檔https://developers.facebook.com/docs/reference/api/user/,您會注意到沒有提及用戶的郵政編碼或郵政編碼。

我建議你使用索要user_location許可,然後調用/me?fields=location,並試圖獲得來自其中所含信息的郵政編碼 - 這個答案https://stackoverflow.com/a/7129344/2091159 - 大約有這樣的一些信息。

+0

你根本不能只從一個城市名獲得郵政編碼。許多城市都有很多郵政編碼。最糟糕的不是這個,而是意識到並不是所有的數據庫都具有相同格式的位置名稱,並且使用字符串進行搜索是很痛苦的,甚至更糟糕的是,重複的位置名稱遍佈任何國家。 您最好的機會是在登錄完成後直接詢問用戶。不建議這樣搜索。我已經處理過這些問題,如果你想在不同的國家這樣做,你會變得瘋狂。 – appartisan

+0

查看提供的鏈接 –

+0

我認爲這個鏈接並沒有解決問題,@Reuben Thompson。如果您從Facebook API提供的位置獲得「西班牙馬德里」,則無法獲得一個郵政編碼,因爲馬德里市擁有大約63個不同的郵政編碼。更糟糕的是,你不確定用戶是否在馬德里(馬德里地區),因爲該國有其他'馬德里'城市,facebook的位置不提供這些信息。最後,在城鎮名稱中尋找文本巧合通常不是一種選擇,因爲不同的數據庫保存不同的版本(洛杉磯 - 洛杉磯城市 - 洛杉磯,洛杉磯)...... – appartisan

0

這是JavaScript相當於你想要什麼,我想:

FB.api('/me', function(user){ 
    FB.api('/' + user.location.id, function(location){ 
    alert(location.location.zip); 
    }); 
})