2

我已经阅读了 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 获取好友列表?我认为当我获得 accesstoken 时必须获得好友列表许可。如果是对的。我怎么做?

4

2 回答 2

1

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

文档可能有点混乱。该页面指出:

当用户登录您的应用并且您未请求其他权限时,该应用将只能访问该用户的公开个人资料和好友列表。

如果不深入研究专门针对权限列表的文档,您可能会认为read_friendlists添加到scope用户的好友列表时将可用,但事实并非如此。该页面清楚地表明,阅读 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
于 2013-04-19T07:05:35.973 回答
0

read_friendlists当用户对您的应用进行身份验证时,您需要征求用户的许可。而且,要阅读好友列表,您需要用户访问令牌,而不是应用访问令牌。显然,相关用户的访问令牌。

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

于 2013-04-19T06:56:42.820 回答