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

Facebook graph api 无法使用Facebook api 2.0访问用户的用户名,facebook-graph-api,facebook-javascript-sdk,facebook-graph-api-v2.0,Facebook Graph Api,Facebook Javascript Sdk,Facebook Graph Api V2.0,我使用facebook api 2.0允许用户使用他们的facebook个人资料数据填写我的自定义表单。我不想要facebook的预填表单。我得到了其他信息,比如名字,姓氏,电子邮件。但显然Facebook api 2.0已经从响应对象中删除了用户名,我无法访问它。我注意到Response.link包含此人个人资料的url,并且www.facebook.com/后面的部分与用户名相同。如果我们成功获取链接,我们可以获得用户名。但我不确定这是否适用于所有用户。但是,当我尝试访问该链接时,我会得到具

我使用facebook api 2.0允许用户使用他们的facebook个人资料数据填写我的自定义表单。我不想要facebook的预填表单。我得到了其他信息,比如名字,姓氏,电子邮件。但显然Facebook api 2.0已经从响应对象中删除了用户名,我无法访问它。我注意到Response.link包含此人个人资料的url,并且www.facebook.com/后面的部分与用户名相同。如果我们成功获取链接,我们可以获得用户名。但我不确定这是否适用于所有用户。但是,当我尝试访问该链接时,我会得到具有应用程序范围id的链接,如下所示:

"www.facebook.com/app_scoped_user_id/XXXXXX/"  
最后一部分XXXXXX是一些数字id。有人知道如何以数字形式访问链接吗

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

正如所清楚说明的那样

/我/用户名不再可用


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

如果您的应用程序只需要当前授权用户的用户名或任何其他授权用户,则这是可能的

第一步,调用/v2.0/me?fields=third\u party\u id端点。您必须使用基本作用域授权的授权用户访问令牌,即足够的公共_配置文件权限

或者,您也可以使用应用访问令牌。当然,您不能再使用me连接,您必须明确地输入用户ID。例如,以下屏幕截图上显示的12345678:

第二步,使用应用程序访问令牌此处不允许用户访问令牌调用以下FQL查询:

从标准用户信息中选择用户名,其中包含第三方id= '示例12345ABCDEF'

其中示例12345ABCDEF是从第一步得到的第三方id示例

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

干杯:

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


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

如果您只需要向用户显示其姓名,为什么不使用“姓名”字段?它包含他们的名字和姓氏。我已将我的应用程序更改为使用名称而不是用户名

那么,你的应用程序是在2014年4月30日之后创建的。我看你不可能得到用户名。不管怎样,你为什么特别需要这个?你不能用用户id作为例子吗?如果我用用户的Facebook用户名填充用户名字段,这会对我有所帮助,而用户id是数字,很难记住。e、 例如,g.johnbrown比452864562822更容易记住。Facebook用户名也应该是唯一的。然后使用名字和姓氏的组合。这里没有问题。。。这是一个事实,你不能再获得用户名,所以我建议你尝试寻找另一个合适的解决方案,而不是试图获得一些解决办法,这将是无效的反正明年如果我们能够访问链接属性,我们可以获得用户名。不幸的是,正如我在问题中提到的,我得到了与作用域id的链接。我认为这是无用的。创建一个干净的解决方案,而不是解决方法。您想只获取当前授权用户的用户名还是任何用户的用户名?当前授权用户的用户名。当他访问这个页面时,他会得到一些选择,比如注册Facebook。当他点击它时,他将有机会使用Facebook登录对话框进行身份验证。成功登录后,我想访问他的用户名。一旦您将v2.0推送到生产环境,并且真正的用户与之连接,您将无法切换回v1.0,因为涉及这些用户的/用户调用将被解释为v2.0,无论您指定的版本如何。这里有一些陷阱,我发现它们也令人困惑,所以我写了一篇解释它们的文章。非常感谢你详细的回答。很遗憾,我无法使用服务器端代码来获取应用程序访问令牌。在v2.1之后,FQL已被弃用:/