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

Ben*_*ten 8 facebook facebook-graph-api

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

不幸的是,它并不总是有效.看这些例子:

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

{
   "id": "1423993568",
   "gender": "male",
   ...
}
Run Code Online (Sandbox Code Playgroud)

不工作: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
   }
}
Run Code Online (Sandbox Code Playgroud)

但是,当我直接通过网络打开用户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
Run Code Online (Sandbox Code Playgroud)

收益:

{
   "id": "669926402",
   "first_name": "Shiffoni",
   "gender": "female",
   "last_name": "Leonhardt",
   "locale": "de_DE",
   "name": "Shiffoni Leonhardt",
   "username": "shiffoni"
}
Run Code Online (Sandbox Code Playgroud)

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

Ben*_*ten 8

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

可能的解决方法:

  • 使用性别api(例如genderize.io)根据名字检索性别.
  • 从用户关于页面抓取Facebook(需要通过网络登录)的性别信息.