Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/drupal/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
从应用程序范围的用户ID获取Facebook用户ID_Facebook_Facebook Graph Api_Facebook Apps - Fatal编程技术网

从应用程序范围的用户ID获取Facebook用户ID

从应用程序范围的用户ID获取Facebook用户ID,facebook,facebook-graph-api,facebook-apps,Facebook,Facebook Graph Api,Facebook Apps,随着从Facebook Graph API v1.0升级到v2.0,Facebook正在使用“应用程序范围内的用户ID”,因此我无法再在我的应用程序中看到“原始”用户ID 我总是使用实时更新和图形API调用(如“”)来分析应用所在Facebook页面上的用户活动。但由于这些数据包含原始用户ID,我无法再将这些活动与我的注册用户进行匹配 那么,有没有办法从应用程序范围的用户ID中获取原始Facebook用户ID?还是反过来 编辑: 最后,我使用这里提到的API方法获取了我所有用户的应用程序范围ID

随着从Facebook Graph API v1.0升级到v2.0,Facebook正在使用“应用程序范围内的用户ID”,因此我无法再在我的应用程序中看到“原始”用户ID

我总是使用实时更新和图形API调用(如“”)来分析应用所在Facebook页面上的用户活动。但由于这些数据包含原始用户ID,我无法再将这些活动与我的注册用户进行匹配

那么,有没有办法从应用程序范围的用户ID中获取原始Facebook用户ID?还是反过来

编辑:

最后,我使用这里提到的API方法获取了我所有用户的应用程序范围ID:并将它们存储在我的数据库中,添加到旧ID中。 然后,每当RTU到达时,对于“老用户”,我将检查哪个用户具有此应用程序范围的ID,并处理更新。
至少在API v1.0被弃用前几天,Facebook设法修复了评论()中提到的bug,因此对于我的应用程序的新用户来说,它就像一个魅力。到目前为止……

没有(简单/明显的)可能根据应用程序范围内的用户id获取真实的用户id。

有一个肮脏的黑客来检索原始用户id

这将返回facebook公共信息,如下所示:, { “id”:“应用范围id”, “名字”:“xxxx”, “性别”:“男性”, “姓氏”:“yyyy”, “链接”:“, “区域设置”:“en_US”, “名称”:“xxxx yyyy”, “用户名”:“zzzz” }

然后使用用户名进行另一个graph api调用


这将返回原始的facebook id和其他公共信息,而不是Johannes N.之间对话中的应用程序范围id

我可以通过原始用户获取应用范围ID(对于我拥有的应用) 那也会有帮助的

要从原始用户id获取应用范围id,可以通过以下方式轻松完成:

Yo可以使用fields参数仅返回id:

使用ids而不是id的好处是,您可以查询多个id:

*可以删除www以减少字符数

要从用户名获取应用程序范围的ID,也可以轻松完成以下操作:


你不能从范围回到真实。最好的办法是将它们全部转换为作用域。这非常简单:

下面是一些简单的Ruby代码:

require 'open-uri'
require 'json'

json = JSON.load(open("https://graph.facebook.com/?ids=#{real_id}&access_token=#{FACEBOOK_APP_ID}|#{FACEBOOK_APP_SECRET}"))
scoped_id = /app_scoped_user_id\/(\d+)\//.match(json[real_id.to_s]['link'])[1]

我发现一个网站可以帮助你从应用程序范围的id中获取facebook用户id

在这儿

美国石油学会

我想是的……:(反过来呢?我可以通过原始用户id获得应用范围id(对于我拥有的应用)。这也会有帮助。我认为业务映射API()可能会提供类似的功能。顺便说一句:我也会采用复杂/不明显的解决方案;)否则,我的应用程序的主要功能将非常无用……好吧@kolli这里有一个复杂的解决方案:为什么不让一个自动浏览器通过你的应用程序和facebook oauth登录,然后继续加载所有人的姓名和照片,然后将其删除,然后按姓名安排许多fb搜索该照片?然后,它可以从API v2.0中不存在的搜索引擎中重新构建它。如果您从一开始就使用API v1.0,则不需要使用应用程序范围的用户ID。不幸的是,这不适用于我。我看到了所有字段,但没有看到“用户名”字段。。。另外,当我对任何用户尝试第二部分时,我得到了一个OAuthException“(#803)不能通过用户名(username)”查询用户……正如我所说的。用户名在API v2.0.Hm中不可用,我想知道v1.0是否适用于应用程序范围的ID?。。。Graph Explorer不允许我尝试,因此我将在注册过程中直接从应用程序中测试它。。不过,这只会在v1.0可用时对我有所帮助……你不应该有问题,因为Graph API v2.0是向后兼容的,如果用户之前已经授权了你的应用程序,那么你总是会获得该用户的原始用户ID。如果用户现在是新授权的应用程序,那么您总是获得应用程序范围的id。{postId}/comments可能返回应用程序范围的用户ID或原始用户ID,这取决于此用户是否为旧用户。是的,我知道向后兼容性。实际问题是实时更新。那里我只有“原始”用户ID…这里有一个关于使用错误ID进行实时更新的公开错误:我希望看到该错误得到修复,这将使我更容易:)thx获取信息!只需提及,这种类型的URL适用于您希望从应用程序范围的用户idCool访问用户配置文件的情况!我真的更喜欢使用应用程序范围的ID获取RTU-但如果这不可能,您的解决方案将对我有很大帮助!如果可以的话,我会投赞成票;)似乎不再管用了。尝试用户ID为4的Facebook Graph Explorer(如上所述)将返回
“ID”:http://www.facebook.com/4“
现在。我想我会追踪所有有名字的老用户,找出真实的ID。投票赞成这个想法,但不幸的是,这并不能解决我的问题……对于已经注册的用户,我仍然会得到“真实ID”“他们登录应用程序时的ID。事实上,这是我现在的主要问题——拥有“真实”ID的用户和拥有应用范围ID的用户。。RTU只有一个……非常感谢!这保存了我的项目。你是个救生员。@Taha我最后没用这个,所以不知道。。。也许Sam能帮上忙?在贴出这个答案几个月后就没用过这个了。祝你好运!过时了,不再工作了。可能是因为API使用了旧的、不推荐使用的Graph API版本。不幸的是,作用域ID的预期用途是使其无法从中获取真正的ID。有关这方面的更多信息,请参阅我的答案。