3

When I access the list of my friends using the URL https://graph.facebook.com/me/friends?access_token=... I can see the list of my friends. I can do this programmatically as well.

Now, when I take the ID of any of my friends and replace it with "me" in the above URL, and paste the URL in the browser, I can see my friend's friends. I am unable to do this programmatically because it is giving me an HTTP 400 ERROR.

Does anyone know why this is possible by pasting the URL and not programmatically?

4

2 回答 2

3

您无法使用 facebook api 获得“朋友的朋友”。

例如,使用 Graph API Explorer尝试简单的/me/friends ,它应该可以正常工作。然后,取其中一个 id 并尝试与 FRIEND_ID/friends 相同,你应该得到这个:

{
  "error": {
    "message": "(#604) Can't lookup all friends of FRIEN_ID. Can only lookup for the logged in user or the logged in user's friends that are users of your app.", 
    "type": "OAuthException", 
    "code": 604
  }
}

错误本身非常直截了当,并准确地解释了问题所在。至于为什么这会为您转换为 400 错误代码尚不清楚。


编辑

您在浏览器中也看不到“朋友的朋友”,它对您有用的原因(可能)是您检查朋友的用户(USER_ID/friends)安装了访问的应用程序令牌属于,从你到那个 url 的方式我假设应用程序是“Test_console”。

如何检查?从 url (USER_ID/friends?access_token=xxxxx) 复制访问令牌,转到Facebook 调试器并将令牌粘贴到文本字段中,然后单击“调试”,它将显示有关应用程序的信息。

您检查它的用户可能已经“安装”了该应用程序,如果您为其他用户检查它,当您找到没有“安装”该应用程序的用户时,您会收到该错误。

我希望这可以为您澄清。

于 2012-04-18T07:33:53.690 回答
0

我有朋友的朋友(有限)正在使用应用程序。我有同样的问题。虽然回答问题已经很晚了,但它会帮助别人。这就是为什么要回答这个问题。

我们可以得到那些是应用程序用户的朋友的朋友。

$fb_id= 需要朋友的朋友的用户 ID。

试试这个 fql 查询。

$query="SELECT uid, name, work_history FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 IN (SELECT uid FROM user WHERE uid IN (SELECT uid2 FROM friend WHERE uid1 = $fb_id ) and is_app_user=1)";

它需要以下要求:

  1. 您的朋友需要使用应用程序。
  2. 来自应用程序 read_stream、publish_stream、publish_checkins 的权限。
于 2012-06-05T06:00:10.843 回答