我过去很容易在API 1.0中获取用户的用户名,使用/me
并获取响应对象的username
属性。
现在我收到了API 2.0的错误:
“(#12)用户名已弃用v2.0及更高版本”
我发现直到现在才发现这一点的唯一方法是使用FQL,但现在它似乎已被弃用。
任何人都知道解决这个问题的方法吗?谢谢!
答案 0 :(得分:21)
我并不是说无益,但据我所知,似乎已经从API中删除了对用户名的访问权限。应用程序可能使用用户名的位置(例如在旧共享对话框中)在与2.0 API一起使用时无法再这样做。我认为这也是一种阻止应用程序访问应用程序范围之外的可用唯一标识符的方法 - 您在2.0 API下检索的任何用户ID都仅针对您的应用程序。
答案 1 :(得分:8)
我找到了一个简单的解决方法,涉及到Facebook的获取请求。 Facebook将为您提供一个独特的ID,而不是用户名。
我发现向https://www.facebook.com/[profile_id]发出请求后会重定向到用户的真实个人资料。用户名可以从重定向网址中提取。
示例:
> curl -i https://www.facebook.com/710290539
HTTP/1.1 301 Moved Permanently
Location: https://www.facebook.com/colinskow
(注意:由于我是测试模式下应用的所有者,这可能是个例外。如果您能够在生产环境中确认,请在评论中告诉我。)
答案 2 :(得分:5)
作为解决方法,您可以将电子邮件用作唯一标识符。可以使用“email”作为权限范围来检索电子邮件地址。
Facebook已从新API版本中删除了用户名字段。无法检索用户名。但Facebook提供了特定于应用程序的唯一ID。如果您需要在多个应用程序之间共享同一用户,则可以使用新引入的Business Mapping API。这允许将所有必需的应用程序添加到组中。在这种情况下,ID在组中的所有应用程序中都是唯一的。
有关Business Mapping API的更多信息,请访问https://developers.facebook.com/docs/apps/for-business 1