6

是否有人通过 Facebook Graph API 成功访问了用户的好友列表?

我已经编写了代码来通过 Facebook 的 OAuth API 在我的网站上对用户进行身份验证。它工作得很好;我可以访问公共信息、喜欢、兴趣、活动等。我通过以下 URL 格式访问这些数据点,其中我将“uid”替换为有效 id(我使用 uid 代替“me”,因为“me”不像宣传的那样工作):

https://graph.facebook.com/uid?access_token= ...
https://graph.facebook.com/uid/likes?access_token= ...
https://graph.facebook.com/uid/interests? access_token= ...
https://graph.facebook.com/uid/activities?access_token= ...

但是,访问朋友根本不起作用。网址,

https://graph.facebook.com/uid/friends?access_token= ...

返回以下错误:

{
   "error": {
      "type": "OAuthAccessTokenException",
      "message": "An access token is required to request this resource."
   }
}

Graph API 文档上的示例都有效,但该页面上生成的访问令牌与我的格式不同。我不确定为什么。我已经按照他们的指示进行了发球台(并且让它适用于其他一切!)。

朋友被认为是可公开访问的信息,我已经仔细检查了我的 Facebook 帐户权限,所以我认为这不是问题所在。

4

4 回答 4

7

如果用户连接到您的应用程序,您可以像这样检索他们的朋友:

    $facebook = new Facebook(array(
                'appId' => 'xxxxxxxx',
                'secret' => 'xxxxxxx',
                'cookie' => true,
            ));

    // $session is only != null, when you have the session-cookie, that is set by facebook, after the user logs in
    $session = $facebook->getSession(); 

    // you dont get a list of friends, but a list, which contains other friendlists
    $friendsLists = $facebook->api('/me/friends');

    foreach ($friendsLists as $friends) {
      foreach ($friends as $friend) {
         // do something with the friend, but you only have id and name
         $id = $friend['id'];
         $name = $friend['name'];
      }
   }

但是您只能访问朋友的 ID 和姓名。

于 2010-12-17T20:52:47.740 回答
0

您需要先获取访问令牌。看:

Facebook Graph API — 获取访问令牌

于 2010-07-13T19:13:05.443 回答
0

你从哪里得知朋友可以公开访问?您链接到的常见问题解答指出:

公开信息包括您的姓名、头像、性别和网络。此信息使您认识的朋友、家人和其他人更容易与您联系。

我看那段没有提到朋友。

于 2010-07-13T19:16:54.830 回答
0

您看到的错误意味着access_token没有被发送。这也可能是为什么/me对你有用。也有可能一旦你解决了这个问题,朋友的联系就会如你所愿地出现。

于 2010-07-19T20:36:56.507 回答