我已经阅读了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获取好友列表?我认为必须获得友好列表的许可才能获得访问权限。如果合适的话。我该怎么做?
答案 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。