Facebook Graph API - 如何从公共资料中获取性别

时间:2014-07-24 23:40:05

标签: facebook facebook-graph-api

我需要通过Facebook Graph API从他的公开个人资料中检索Facebook用户的性别。

不幸的是,它并不总是有效。请参阅以下示例:

工作: https://graph.facebook.com/1423993568

{
   "id": "1423993568",
   "gender": "male",
   ...
}

不工作: https://graph.facebook.com/10152133878666403

{
   "error": {
      "message": "Unsupported get request. Please read the Graph API documentation at https://developers.facebook.com/docs/graph-api",
      "type": "GraphMethodException",
      "code": 100
   }
}

但是当我直接通过网络打开用户ID时,它可以工作,我甚至可以看到性别。 (转到"关于/联系和基本信息")我使用我的个人帐户登录,而不是该用户的朋友! http://www.facebook.com/10152133878666403

有什么问题?这是Facebook的请求或安全功能的问题吗?

更新

我可以像这样做一个解决方法,但前提是我使用浏览器登录:

在打开此请求时,获取app_scoped_user_id并从重定向网址获取Facebook用户名:

http://www.facebook.com/app_scoped_user_id/10152133878666403
  --> https://www.facebook.com/shiffoni
  --> https://graph.facebook.com/shiffoni

返回:

{
   "id": "669926402",
   "first_name": "Shiffoni",
   "gender": "female",
   "last_name": "Leonhardt",
   "locale": "de_DE",
   "name": "Shiffoni Leonhardt",
   "username": "shiffoni"
}

获取性别,真实userId或昵称的其他任何想法?

5 个答案:

答案 0 :(得分:7)

正如Facebook员工在评论中已经回答的那样,根本不可能,因为它不支持获得“性别”或真正的Facebook用户ID。

可能的解决方法:

  • 使用性别api(例如genderize.io)来首先检索性别 名称。
  • 从Facebook抓取性别信息(需要 通过网络登录)用户关于页面。

答案 1 :(得分:2)

使用facebook图表api在develoers.facebook.com =>下检查它的最佳方式工具& support =>图形API资源管理器。

$fb = new Facebook(array(
 'appId'  => $app_id,
  'secret' => $app_secret,
  'cookie' => true
));

$fbuser=$fb->api('/me/friends?fields=id,name,gender');

它将为你的所有朋友提供一个名字&性别,你可以循环并在循环中放入一个条件来分隔男性和女性。女性朋友。

希望有所帮助

了解更多信息阅读本文

Getting Facebook Friends with Gender

答案 2 :(得分:2)

仅在API版本v1.0中返回用户性别。不幸的是,v1.0可用到2015年4月30日https://developers.facebook.com/docs/apps/changeloghttp://www.name-gender.com/对于检查性别也是一个非常好的api。

答案 3 :(得分:0)

形成我所理解的不仅仅是图表api v3,因为在2.12我仍然能够获得性别

答案 4 :(得分:-1)

在Facebook中无法获取个人资料的性别,但您可以拆分名字并将请求发送至https://genderapi.io

  

https://genderapi.io/api/?name=mike

{"name":"mike", "q":"mike", "gender":"male", "total_names":8336, "probability":99}