我曾经相当容易地在 API 1.0 中获取用户的用户名,使用/me
和获取username
响应对象的属性。
现在我在 API 2.0 中遇到了这个错误:
“(#12) 用户名已弃用 v2.0 及更高版本”
到目前为止,我发现获得此功能的唯一方法是使用 FQL,但现在它似乎已被弃用。
有没有解决的办法?
我曾经相当容易地在 API 1.0 中获取用户的用户名,使用/me
和获取username
响应对象的属性。
现在我在 API 2.0 中遇到了这个错误:
“(#12) 用户名已弃用 v2.0 及更高版本”
到目前为止,我发现获得此功能的唯一方法是使用 FQL,但现在它似乎已被弃用。
有没有解决的办法?
我并不是说没有帮助,但据我所知,似乎已从 API 中删除了对用户名的访问权限。在与 2.0 API 一起使用时,应用程序可能一直在使用用户名的地方(例如在旧的共享对话框中)不能再这样做了。我认为这也是一种防止应用程序访问应用程序范围之外的可用唯一标识符的方法 - 您在 2.0 API 下检索的任何用户 ID 都特定于您的应用程序。
我找到了一个简单的解决方法,它涉及到 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
(注意:由于我是测试模式应用的所有者,这可能是一个例外。如果您能够在生产环境中确认这一点,请在评论中告诉我。)
作为一种解决方法,您可以使用电子邮件作为唯一标识符。可以使用“电子邮件”作为权限范围来检索电子邮件地址。
Facebook 已从新 API 版本中删除了用户名字段。无法检索用户名。但是 Facebook 提供了一个特定于应用程序的唯一 ID。如果您需要在多个应用程序之间共享同一个用户,您可以使用新引入的 Business Mapping API。这允许将所有必需的应用程序添加到组中。在这种情况下,ID 在组中的所有应用程序中将是唯一的。
有关业务映射 API 的更多信息,请访问https://developers.facebook.com/docs/apps/for-business 1