2013-06-20 65 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); 
    }); 
})