【问题标题】:Facebook getUser returns wrong IDFacebook getUser 返回错误的 ID
【发布时间】:2012-01-19 14:09:51
【问题描述】:

我的应用程序有问题。我唯一需要用户的是facebook id。在他们登录 facebook 后,他们会被重定向回我的应用程序,我可以使用 $facebook->getUser() 获取用户 ID。这很好用,除非用户在 facebook 上选择了用户名。然后我得到一个与用户 ID 不同的非常奇怪的长 ID。

为了澄清,假设我向一个没有设置用户名的用户询问用户 ID,例如我得到的 id:1234567891。 当用户设置用户名时,我会得到一个 ID,例如:100002339295322。

有人知道我怎么解决这个问题吗?

如果您需要我如何做事的代码示例,我会按照 facebook 开发者网站上的说明进行操作:http://developers.facebook.com

带着友好的问候, 鲍勃

PS:我使用CodeIgniter框架和官方facebook php sdk

*/// 编辑 \*

问题解决了。显然它与我用于该字段的数据类型有关。我将它从 int 更改为 varchar,现在一切正常。

【问题讨论】:

  • 是什么让您认为您获得的“长”用户 ID 是错误的?您如何获得用于比较的“真实”用户 ID?
  • 试了试:facebook.com/profile.php?id=1234567891,短版有效,长版无效。
  • 我刚刚检查了一个测试帐户用户 ID,它与您的“长”格式匹配(该帐户也有一个用户名)。将其用作个人资料页面的 id 参数也可以。所以我想你应该检查你的假设 - 也许你正在测试的用户帐户由于某种原因没有个人资料页面? (像 getUser() 这样的核心 SDK 函数返回错误数据的可能性很小。)
  • 显然它与我用于该字段的数据类型有关。我将其更改为 varchar,现在一切正常。你说得对,两个身份证都是有效的。谢谢你的帮助!

标签: php facebook codeigniter sdk


【解决方案1】:

我遇到了类似的问题,发现在 v2.0 API 之后 user_id 是应用范围的。我有两个 user_id 用于同一个用户的个人资料但不同的应用程序,两者都对各自的应用程序有效。

您可以通过

访问用户个人资料
http://facebook.com/app_scoped_user_id/<USER_ID>

您还可以使用应用令牌和应用范围内的用户 ID 查询图形 API。

参考:https://developers.facebook.com/docs/apps/upgrading/#upgrading_v2_0_user_ids

【讨论】:

  • 我遇到了和 OP 一样的问题,这解决了它。我试图使用此https://www.facebook.com/profile.php?id=LONG_USER_ID 链接到用户的个人资料,但它不起作用。谢谢!
【解决方案2】:

对于 2014 年 5 月 1 日之后来到这里的用户,测试应用现在默认使用 v2 API,如果您的应用是使用 v1 构建的,这将导致问题。请在此处查看常见问题解答中的最后一篇帖子https://developers.facebook.com/docs/apps/test-apps

【讨论】:

    【解决方案3】:

    并非所有 facebook 用户都有用户名,但他们都有用户 ID。 (例如,有一个字母数字用户名是可选的,只是为了方便访问 - facebook.com/johnsmith 或 smth)

    您最好的办法是存储 ID(大约 10 位数字),如果您要存储姓名,也许可以像 stackoverflow 那样存储他们的名字。

    【讨论】:

    • 问题是我正在获取用户 ID,但是当用户设置了用户名时,我没有通过 $facebook->getUser() 获得正确的用户 ID,而是一个非常奇怪的用户 ID。这就是问题所在;)。
    • 什么叫奇怪?你能举个例子吗?
    猜你喜欢
    • 2011-09-22
    • 2012-01-01
    • 1970-01-01
    • 2012-02-03
    • 1970-01-01
    • 2012-01-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多