2

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。有人知道如何以“ https://www.facebook.com/username ”的形式访问链接吗?

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

4

4 回答 4

4

正如https://developers.facebook.com/docs/apps/changelog#v2_0_api_versions明确指出的那样

/me/username 不再可用

如果您的应用是在 2014 年 4 月 30 日之后创建的,则无法切换回 v1.0。如果没有,您可以预先/v1.0提出您的请求,但这仅在 2015 年 4 月 30 日之前有效。

于 2014-05-15T06:59:19.100 回答
2

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

第一步,您调用/v2.0/me?fields=third_party_id端点。您必须使用授权的用户访问令牌(授权基本范围,即足够的public_profile权限)。

在此处输入图像描述

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

在此处输入图像描述

第二步,使用 App Access Token (User Access Token is not allowed here) 调用以下 FQL 查询:

从 standard_user_info 中选择用户名,其中third_party_id = 'example12345abcdef'

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

在此处输入图像描述

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

干杯:)

于 2014-05-15T11:08:13.250 回答
2

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

在此处输入图像描述

在任何 Facebook API 响应中,您都会获得用户名,前提是用户已在其 Facebook 设置下设置了用户名。

于 2014-06-26T12:15:16.007 回答
0

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

于 2014-07-10T08:11:20.100 回答