【问题标题】:Find Facebook global profile ID from app_scoped_user_id从 app_scoped_user_id 查找 Facebook 全局配置文件 ID
【发布时间】:2015-06-25 12:18:37
【问题描述】:

这在 Stack Overflow 上已被问过很多次,但所有答案都说明了如何将 Facebook 个人资料 ID 转换为 app_scoped_user_id。我的要求正好相反:

  • 我有一个app_scoped_user_id,由 Facebook Graph API 提供。
  • 我想要全局个人资料 ID,以便将链接输出到用户的 Facebook 页面。

这是我的 PHP 应用程序的流程:

使用我自己的 Facebook 帐户进行身份验证时,这是 Graph 对象的内容:

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 帐户的链接。这可以通过知道 Facebook 帐户的 ID 轻松完成,前往 http://facebook.com/profile.php?id=XXXXX 购买,如果您已命名您的帐户,它甚至会重定向到正确的页面。

但是,Graph Object 响应中指定的 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 问题在于,跟随应用范围内的用户链接需要用户登录才能查看配置文件。想象一下构建一个像 about.me 这样的社交网络中心,您希望在其中列出公共帐户以供全世界查看。
  • 如果我没有登录,facebook.com/profile.php?id=100000218905189 除了你的头像和姓名之外什么也不会显示...如果他们想查看有关您的个人资料的更多详细信息,他们也应该愿意登录 Facebook。
  • @CBroe 如果 Facebook 只是在响应中提供 ID 似乎仍然会更容易,但我同意你关于登录的看法......似乎我被要求运行在 FB 的圈子里完成这样的简单任务。感谢您的意见。
  • 如果他们仍然提供全局用户 ID,那么首先引入应用范围内的用户 ID 将毫无意义。

标签: php facebook facebook-graph-api


【解决方案1】:

这个问题已经被问过几次了 (Get Facebook User ID with Facebook App Scope ID)

您应该无法从应用范围的 ID 获取全局 ID。 Facebook 正在慢慢修复所有找到它的方法,因为它们被认为是“黑客”。

既然你提到了,从用户的个人资料页面有一些方法可以找到你的全球 ID,这可能也会被 Facebook 及时修复,但如果你仍然感兴趣,这个 (How to find my own facebook ID? (not the app-scoped ID)) 问题的一些答案可能有用。

【讨论】:

  • 也许我问错了问题?我想要的只是能够将用户个人资料的 URL 输出到屏幕上,这样我就可以输出一个链接到他们的个人资料。
  • 如果你想链接到他们的个人资料并且你有 app-scoped ID,你可以链接到facebook.com/app_scoped_user_id{app-scoped-id}/ 它应该重定向到用户的个人资料。
  • 不幸的是,情况并非如此。即使我的个人资料是公开的,我也会看到一个 Facebook 登录页面。另外,我想要 ID,这样我就可以像 graph.facebook.com/100000218905189/picture 这样显示我的个人资料图片 - 如果没有全局 ID,这将是不可能的,不是吗?
  • 我相信您是对的,您需要登录 facebook 才能使用 facebook.com/app_scoped_user_id{app-scoped-id}/ 链接。不过,个人资料图片,我相信您可以使用应用程序范围的 ID 显示它:graph.facebook.com/1117686364915316/picture?type=normal(我刚刚使用您的 ID 对其进行了测试,并且有效)
猜你喜欢
  • 2022-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-11-24
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多