如何在Facebook的Graph API的v2.0或更高版本中获取用户的用户名

joa*_*ibs 34 facebook-graph-api facebook-graph-api-v2.0

我过去很容易在API 1.0中获取用户的用户名,使用/me并获取username响应对象的属性.

现在我在使用API​​ 2.0时出现此错误:

对于版本v2.0及更高版本,不推荐使用"(#12)用户名"

我发现到目前为止唯一的方法是使用FQL,但现在它似乎已被弃用.

有人知道解决这个问题吗?谢谢!

gif*_*iff 21

我并不是说无益,但据我所知,似乎已经从API中删除了对用户名的访问权限.应用程序可能使用用户名的位置(例如在旧共享对话框中)在与2.0 API一起使用时无法再这样做.我认为这也是一种阻止应用程序访问应用程序范围之外的可用唯一标识符的方法 - 您在2.0 API下检索的任何用户ID都仅针对您的应用程序.


Col*_*kow 8

我找到了一个简单的解决方法,涉及到Facebook的获取请求.Facebook将为您提供一个独特的ID,而不是用户名.

我发现向https://www.facebook.com/[profile_id]发出请求将重定向到用户的真实个人资料.可以从重定向URL中提取用户名.

例:

> curl -i https://www.facebook.com/710290539
HTTP/1.1 301 Moved Permanently
Location: https://www.facebook.com/colinskow
Run Code Online (Sandbox Code Playgroud)

(注意:由于我是测试模式下应用程序的所有者,这可能是一个例外.如果您能够在生产环境中确认,请在评论中告诉我.)

  • 看起来Facebook已经改变了这种反应.现在它将在您访问该URL之前重定向到登录. (3认同)

Pra*_*sad 5

作为解决方法,您可以将电子邮件用作唯一标识符.可以使用"email"作为权限范围来检索电子邮件地址.

Facebook已从新API版本中删除了用户名字段.无法检索用户名.但Facebook提供了特定于应用程序的唯一ID.如果您需要在多个应用程序之间共享同一用户,则可以使用新引入的Business Mapping API.这允许将所有必需的应用程序添加到组中.在这种情况下,ID在组中的所有应用程序中都是唯一的.

有关Business Mapping API的更多信息,请访问https://developers.facebook.com/docs/apps/for-business 1

  • 使用电子邮件不可靠.似乎如果用户从他们的时间线隐藏他们的Facebook电子邮件,就像我一样,Facebook将不会返回它. (4认同)