如何获得非当前会话用户的好友列表?

时间:2013-04-19 06:41:38

标签: facebook-graph-api

我已经阅读了facebook api

https://developers.facebook.com/docs/reference/api/user/

我尝试使用非当前会话请求好友列表,如下所示:


1。通过我的应用获取访问令牌

  

https://graph.facebook.com/oauth/access_token?       CLIENT_ID = YOUR_APP_ID&安培; client_secret = YOUR_APP_SECRET&安培; grant_type = client_credentials

我当然获得了访问令牌。如下图所示:

access_token=1234567890|-abcdefghijkl

2。请求使用访问令牌的朋友列表。

https://graph.facebook.com/1023456789/friendlists?access_token=1234567890|-abcdefghijkl

但是,收到了以下错误消息。

{
   "error": {
      "message": "A user access token is required to request this resource.",
      "type": "OAuthException",
      "code": 102
   }
}

ID不是当前用户会话。如您所知,如果使用当前用户会话。我可以毫无问题地获得好友列表。

https://graph.facebook.com/me/friends?access_token=1234567890|-abcdefghijkl

我的问题可归纳如下:

如何使用不是当前会话的用户ID获取好友列表?我认为必须获得友好列表的许可才能获得访问权限。如果合适的话。我该怎么做?

2 个答案:

答案 0 :(得分:1)

假设你获得的访问令牌就是那里,用户被重定向到FB登录页面并重定向回你的应用程序然后继续阅读。

文档可能有点令人困惑。 This page声明:

  

当用户登录您的应用并且您不再申请时   权限,该应用程序将只能访问用户的公共   个人资料和好友列表。

如果不将文档专门插入到权限列表中,可能会认为当read_friendlists添加到scope时,用户的好友列表将可用,但不会。 This page清楚地表明,阅读Facebook用户的好友列表需要extended permission

因此,您需要添加read_friendlists作为范围之一。这是一个示例请求:

https://www.facebook.com/dialog/oauth?type=user_agent
    &client_id=YOUR_FB_APPID
    &redirect_uri=YOUR_DOMAIN
    &scope=read_friendlists

答案 1 :(得分:0)

用户在对您的应用进行身份验证时,需要获得read_friendlists权限。而且,要阅读好友列表,您需要一个用户访问令牌,而不是应用访问令牌。显然,是相关用户的访问令牌。

此时,您的access_token到期时间为1-2小时。在此期间,您可以访问用户的好友列表。令牌过期后,您需要等到他们再次登录。或者,您可以查看Extending Access Tokens