从app_scoped_user_id查找Facebook全局个人资料ID

4
这个问题在Stack Overflow上已经被问了很多次,但所有的答案都解释了如何将Facebook个人资料ID转换为app_scoped_user_id。我要求的恰好相反:
  • 我有一个由Facebook Graph API提供的app_scoped_user_id
  • 我想要全局的个人资料ID,以便可以输出用户Facebook页面的链接。
这是我的PHP应用程序的流程: 当使用我的Facebook帐户进行身份验证时,Graph Object的内容如下:
array (size=11)
  'id' => string '1117686364915316' (length=16)
  'email' => string 'greg.bowler@g105b.com' (length=21)
  'first_name' => string 'Greg' (length=4)
  'gender' => string 'male' (length=4)
  'last_name' => string 'Bowler' (length=6)
  'link' => string 'https://www.facebook.com/app_scoped_user_id/1117686364915316/' (length=61)
  'locale' => string 'en_GB' (length=5)
  'name' => string 'Greg Bowler' (length=11)
  'timezone' => int 1
  'updated_time' => string '2015-06-23T10:12:53+0000' (length=24)
  'verified' => boolean true

通过了解Facebook账户的ID,我需要提供一个链接到我的Facebook账户。这可以通过访问http://facebook.com/profile.php?id=XXXXX来轻松完成,即使你已经为你的帐户命名,它也会自动重定向到正确的页面。

然而,在Graph对象响应中指定的ID并不是我的全局Facebook ID;它是特定于我正在进行身份验证的应用程序的app_scoped_user_id

我如何将app_scoped_user_id转换为我的账户的全局ID?

例如,网站http://findmyfacebookpageid.com/可以实现此功能,尽管其源代码是关闭的。

我可以将我的app_scoped_user_id提供给该服务:http://findmyfacebookpageid.com/get.php?url=https://www.facebook.com/app_scoped_user_id/1117686364915316

然后它返回:

{
facebook_id: "100000218905189"
}

为了证明这个问题是可以回答的,我可以使用返回的facebook_id值通过访问http://facebook.com/profile.php?id=100000218905189来访问我的实际Facebook页面。

“我想要全局个人资料ID,这样我就可以输出用户Facebook页面的链接” - 你不需要全局ID。在你展示的API输出中已经有一个link属性了,这就是你需要链接到用户个人资料的全部内容。当有人在浏览器中访问该URL时,Facebook会自动将他们重定向到“正确”的地址。 - CBroe
@CBroe,问题在于跟随应用程序范围的用户链接需要用户登录才能查看个人资料。想象一下构建一个类似于about.me的社交网络中心,您希望列出公共账户供全世界查看。 - Greg
如果我没有登录,http://facebook.com/profile.php?id=100000218905189 除了你的个人资料图片和姓名外,什么也不会显示给我看... 我认为你可以假设如果有人跟随外部链接访问你的FB个人资料,他们应该愿意登录Facebook,如果他们想查看更多关于你的个人资料的详细信息。 - CBroe
@CBroe,如果Facebook在响应中提供了ID,那么这似乎会更容易,但我同意您关于登录的观点...感觉像是被FB围着圈子跑来跑去,只是为了完成这样一个简单的任务。感谢您的建议。 - Greg
如果他们仍然提供全局用户ID,那么一开始引入应用程序范围的用户ID就没有意义了。 - CBroe
1个回答

3

这个问题已经被问过几次(获取Facebook应用权限ID的用户ID)。

你不应该能够通过应用范围内的ID获取全局ID。Facebook正在逐步修复找到它的每种方法,因为它们被认为是“黑客”。

既然你提到了它,从用户的个人资料页面有一些方法可以找到你的全局ID,这可能也会在 Facebook 中得到修复,但如果你仍然感兴趣,这个 (如何找到自己的 Facebook ID?(不是应用程序范围的ID)) 问题的一些答案可能会有用。


也许我问错了问题?我只想能够将用户个人资料的URL输出到屏幕上,以便我可以输出链接以转到他们的个人资料。 - Greg
如果您想链接到用户的个人资料并且您有应用程序范围内的ID,则可以直接链接到https://www.facebook.com/app_scoped_user_id/{app-scoped-id}/,它应该会重定向到用户的个人资料。 - Juan Carlos Carbonell
1
不幸的是情况并非如此。尽管我的个人资料是公开的,但我却被呈现出一个 Facebook 登录页面。另外,我想要获得 ID,以便像这样显示我的个人资料图片 http://graph.facebook.com/100000218905189/picture - 如果没有全局 ID,这是不可能的,对吗? - Greg
1
我相信你是对的,你需要登录Facebook才能使http://www.facebook.com/app_scoped_user_id{app-scoped-id}/链接正常工作。至于个人资料图片,我认为你可以使用应用程序范围ID来显示它:http://graph.facebook.com/1117686364915316/picture?type=normal(我刚刚用你的ID测试了一下,它可以正常工作)。 - Juan Carlos Carbonell

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接