在堆栈溢出时,这已被问及很多次,但所有答案都解释了如何将Facebook个人资料ID转换为app_scoped_user_id
。我要求完全相反:从app_scoped_user_id查找Facebook全球个人资料ID
- 我有一个
app_scoped_user_id
,由Facebook Graph API提供。 - 我想要全局配置文件ID,所以我可以输出链接到用户的Facebook页面。
这是我的PHP应用程序的流程:
- 一个Facebook Request就是
/me
做,返回Facebook Response - 的响应,我叫getGraphObject()返回一个Facebook Graph Object。
当我自己的Facebook账户验证,这是图形对象的内容:
array (size=11)
'id' => string '1117686364915316' (length=16)
'email' => string '[email protected]' (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帐户。这可以很容易地通过知道Facebook帐户的ID,购买去http://facebook.com/profile.php?id=XXXXX,如果您已经命名您的帐户,甚至会重定向到正确的页面。
但是,图表对象响应中指定的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
值来访问我的实际Facebook页面通过访问http://facebook.com/profile.php?id=100000218905189
_“我想全球的个人资料的ID,这样我就可以输出链接到用户的Facebook页面” _ - 你不这不需要一个全球性的ID。您已经在您显示的API输出中获得了一个'link'属性,这就是您需要链接到用户配置文件的全部内容。当某人在浏览器中访问该URL时,Facebook将自动将其重定向到“正确”地址。 – CBroe
@CBroe问题在于,应用程序范围的用户链接需要用户登录才能看到配置文件。想象一下,建立一个像about.me这样的社交网络中心,您可以在其中列出公开账号供全世界查看。 – Greg
如果我没有登录,http://facebook.com/profile.php?id=100000218905189不会显示我的任何东西,除了你的个人资料图片和姓名......我想你可以假设,如果有人按照外部链接你的FB个人资料,他们也应该愿意登录到Facebook,如果他们想看到你的个人资料的更多细节。 – CBroe