无法使用Facebook api 2.0访问用户的用户名

时间:2014-05-15 06:14:52

标签: facebook-graph-api facebook-javascript-sdk facebook-graph-api-v2.0

我正在使用facebook api 2.0来允许用户使用他们的Facebook个人资料数据来填充我的自定义表单。 (我不想要facebook的预填表格)。我正在获取其他信息,如名字,姓氏,电子邮件。但显然Facebook api 2.0已从响应对象中删除了用户名,我无法访问它。我观察到Response.link包含该人员个人资料的网址,"www.facebook.com/"之后的部分与用户名相同。如果我们成功获取链接,我们可以获得用户名。但我不确定这对所有用户都是如此。但是,当我尝试访问该链接时,我会收到app scoped id的链接,如下所示:

"www.facebook.com/app_scoped_user_id/XXXXXX/"  

其中最后一部分(XXXXXX)是一些数字ID。有人知道如何以“https://www.facebook.com/username”形式访问该链接吗?

另外,如果我们在2.0中无法做到这一点,但我们可以在1.0中,那么如何切换回1.0?

4 个答案:

答案 0 :(得分:4)

由于https://developers.facebook.com/docs/apps/changelog#v2_0_api_versions显然是在陈述

  

/ me / username不再可用

如果您的应用是在2014年4月30日之后创建的,则无法切换回v1.0。如果没有,您可以将/v1.0添加到您的请求中,但这只会在2015年4月30日之前有效。

答案 1 :(得分:2)

如果您只需要当前授权用户的用户名(或您应用的任何其他授权用户),那么就有可能。

首先,您调用 /v2.0/me?fields=third_party_id 端点。您必须使用授权的用户访问令牌(已获得基本范围授权,即 public_profile 权限)。

enter image description here

或者替代方式,您可以使用App Access Token。当然你不能再使用 me 连接,你必须明确地放置用户ID。例如, 12345678 显示在以下屏幕截图中:

enter image description here

第二步,使用App Access Token(此处不允许用户访问令牌)调用以下FQL查询:

  

SELECT username FROM standard_user_info WHERE third_party_id =   'example12345abcdef'

其中“example12345abcdef”是您从第一步获得的 third_party_id 示例。

enter image description here

p / s :请注意,第一步的用户/应用访问令牌必须在第二步使用相同的应用。这是因为third_party_id与应用程序绑定。

干杯:)

答案 2 :(得分:2)

请注意,username在Facebook上是可选的。默认情况下,Facebook个人资料没有用户名

enter image description here

在任何Facebook API响应中,只有当用户在其Facebook设置下设置了用户名时,您才能获得用户名。

答案 3 :(得分:0)

如果您只是需要向用户显示他的名字,为什么不使用" name"领域?它包含它们的名字和姓氏。我已将我的应用更改为使用名称而不是"用户名"。