php – 使用全局ID在图api v2中获取应用用户数据

发布时间:2022-04-30 发布网站:脚本宝典
脚本宝典收集整理的这篇文章主要介绍了php – 使用全局ID在图api v2中获取应用用户数据脚本宝典觉得挺不错的,现在分享给大家,也给大家做个参考。
因此,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的v2也禁止获取具有全局ID的用户数据.从画布应用程序内部调用带有全局ID的图表会产生一个例外,即使用特定于应用程序的ID.

当然,您将获得v2 API返回的id的用户数据(无论是global-id还是app-specific-id).

抱歉,我不太了解您使用的SDK语法(我不喜欢使用SDK),但我确信这会有效.您甚至可以在Graph API Explorer中测试它,只需从(顶部 – 中间)下拉列表中选择您的应用程序并调用v1用户的/ v2 / {user-id},这样就可以获得结果.您必须在代码中做错事.

脚本宝典总结

以上是脚本宝典为你收集整理的php – 使用全局ID在图api v2中获取应用用户数据全部内容,希望文章能够帮你解决php – 使用全局ID在图api v2中获取应用用户数据所遇到的问题。

如果觉得脚本宝典网站内容还不错,欢迎将脚本宝典推荐好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。
标签: