Facebook Graph API - 如何获得用户所在国家/地区?

Bry*_*ynJ 19 facebook facebook-graph-api

我正在使用他们的Graph API开发一个Facebook应用程序.我以前使用不推荐使用的REST API开发了一个应用程序.

我遇到了一个问题,我无法检索用户的国家,只检索他们的"位置" - 这只是组合格式的城市和州/地区(例如'Houston,Texas').

如何使用Graph API检索用户的国家/地区?如果这不可能直接实现,那么实现这一目标可能会有什么变通方法呢?

小智 24

https://api.facebook.com/method/fql.query?format=json&query=SELECT%20current_location%20FROM%20user%20WHERE%20uid=4&access_token= <ACCESS_TOKEN>

[
  {
    "current_location": {
      "city": "Palo Alto",
      "state": "California",
      "country": "United States",
      "zip": "",
      "latitude": 37.4441,
      "longitude": -122.163,
      "id": 104022926303756,
      "name": "Palo Alto, California"
    }
  }
]
Run Code Online (Sandbox Code Playgroud)

FQL文档


Bry*_*ynJ 6

我发现的一个解决方案,仅仅是一种解决方法,是使用GeoNames API - http://www.geonames.org/export/web-services.html

使用类似的东西:

http://api.geonames.org/search?q=houston%2C%20texas&featureClass=P&username=myusername
Run Code Online (Sandbox Code Playgroud)

返回xml对象中的结果,该国家/地区作为数据的一部分.

我对这个解决方案并不是特别满意,因为它为我的应用程序增加了一些不必要的复杂性 - 此次免费服务的请求仅限于每小时2000次和每天30,000次.


Tom*_*Tom 6

使用php sdk:

要求'facebook.php';

$ facebook = new Facebook(array('appId'=>'APPID','secret'=>'APPSECRET',
'cookie'=> true,));

然后请求签名请求:

  $signed_request = $facebook->getSignedRequest();
  $country = $signed_request["user"]["country"];
Run Code Online (Sandbox Code Playgroud)

现在$ country有一个字符串,例如美国的"us"和英国的"uk"等.

  • 想要补充一点,英国似乎是"gb"而不是"英国". (2认同)