【发布时间】:2014-06-25 23:46:49
【问题描述】:
因此,Facebook 图形 API 的第 2 版引入了特定于应用的 ID,以保护用户隐私免受垃圾邮件或类似内容的影响。但他们表示,使用全局 ID 在 v1 中添加您的应用的用户将继续向您发送他们在 v2 中的全局 ID,以保持您的应用向后兼容。
这一切都很好,但是 api 的 v2 还禁止使用全局 ID 获取用户数据。从画布应用程序内部调用具有全局 ID 的图表会出现异常,说明要改用应用程序特定的 ID。
我有点不知所措。我正在尝试获取我的应用程序用户的随机子集的基本信息,以显示给当前用户,该用户不一定是朋友。但是我的大多数用户都在我的数据库中存储了全局 ID,因为他们很久以前就加入了。似乎如果我的应用是新的,那么存储在我的数据库中的所有 ID 都将是特定于应用的,因此我将能够获取他们的信息。这向我表明,Facebook 无意禁止我获取我想要的数据。这对我来说是不可能的,因为不幸的是拥有一个旧应用程序。
我有什么方法可以获取这些数据吗?我知道我可以恢复到图表的 v1,但这将在 2015 年 4 月 30 日消失。我只想要最基本的信息,并且只显示名称。
我使用的是 PHP SDK 版本 4。我的请求如下所示:
(new FacebookRequest(
self::$session, 'GET', '',
array('ids' => implode(',', $userIds))
))->execute()->getGraphObjectList(GraphUser::className());
我的会话来自于在FacebookCanvasLoginHelper 上调用getSession,如他们的文档中所示,因此我有一个新的访问令牌和签名请求。
编辑
所以,我撤销了我的问题,因为我很笨。萨希尔是对的。我的问题是我正在使用单独的应用程序进行测试(不是官方测试应用程序,而是我很久以前创建的用于测试的应用程序),所以有问题的应用程序 ID 并没有实际添加应用程序,所以我可以不知道他们的信息。哎呀。迁移到官方测试应用的充分理由。
再次编辑
我取消了我的问题。 Facebook是愚蠢的。我创建了一个与我的真实应用程序相关联的官方测试应用程序,它为我自己提供了一个特定于应用程序的 ID,而不是为主应用程序提供的 ID。我查看了我之前遇到问题的页面,同样的例外:
Facebook\FacebookAuthorizationException: The global ID 693041250 is not allowed.
Please use the application specific ID instead.
测试应用的开发页面说:
- 测试应用与您的生产应用共享相同的应用范围用户 ID 命名空间,从而更轻松地调试应用范围 ID 的问题,或者在您使用生产数据库副本的情况下发展。
这显然是不正确的。我正在使用我的生产数据库的副本。我知道我的 Facebook ID。它甚至不会给出我自己为生产应用程序提供的 ID,更不用说其他人的了。这个新东西是否只适用于全新的应用程序或其他东西?我现在已经准备好放弃 Facebook 的开发了。
【问题讨论】:
-
您执行的 API 调用是什么,您使用的是什么访问令牌?
标签: php facebook facebook-php-sdk facebook-graph-api-v2.0