Facebook图形API:获取用户所在城市(位置)

问题描述:

我目前实现了Facebook登录并获取用户位置的访问权限。像这样:Facebook图形API:获取用户所在城市(位置)

user.profile.city = auth.info.location 

我只需要城市的用户,但位置给了城市和州。根据许可文档,位置是用户的城市。但它也是一种状态。

如何获得唯一的城市?有什么办法吗?因为例如

user.profile.city = auth.info.location.split(",")[0] 

+0

难道你不能把这座城市解析为“城市+州”吗? – Madbreaks 2013-04-25 19:52:08

+0

@Madbreaks不知道该怎么做。对不起,新的ror。 – user2206724 2013-04-25 20:04:11

我假设你使用的是一些gemomniauthomniauth-facebook

试试这个

`auth.info.location` value = location: Olongapo City, Philippines 

使用所提供的代码,它会return Olongapo City

+0

哇,简单而好看:-) – user2206724 2013-04-26 09:14:58

+1

这不行。有许多用户的位置不包括国家/地区。例如,一个非常流行的是“利物浦”。 (真实用户记录的实例)。 Facebook不会在“位置”字段上强制执行结构 - 它是页面指针。 – 2014-12-24 18:20:42

这样做:

SELECT current_location FROM user WHERE uid=USER_ID 

例子:https://developers.facebook.com/tools/explorer?fql=SELECT%20current_location%20FROM%20user%20WHERE%20uid%3D4

https://developers.facebook.com/tools/explorer/

尝试用图形API浏览器:/我 只有城市和国家赋予的位置和家乡,没有邮编,国家,

FB.api('/me', function (json) { 
    var fid = json.id; 
    var sCity = ''; 
     var sState = ''; 
    if (json.location !== undefined && json.location.name !== undefined) { 
      var sLoc = json.location.name; 
     var aLoc = sLoc.split(','); 
     if (aLoc.length > 0) { 
      sCity = aLoc[0]; 
     } 
     if (aLoc.length > 1) { 
      sState = aLoc[1]; 
     } 
    } 
});