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.我查看以前遇到过麻烦的页面,同样的例外情况: FacebookFacebookAuthorizationException: 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},这样就可以获得结果.您必须在代码中做错事. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |