如何用Python-Social-auth和Django获取Facebook好友信息

11 投票
2 回答
7263 浏览
提问于 2025-04-17 23:13

我想知道怎么用Python-Social-auth和Django来获取Facebook朋友的信息。我已经能获取到用户的个人资料信息并完成了用户认证,但我还想获取更多关于他们朋友的信息,并邀请他们使用我的应用。谢谢!

2 个回答

1

补充一下上面回复的内容。要从extra_data中获取token,你需要导入包含这些数据的模型(我花了一段时间才找到这个):
from social.apps.django_app.default.models import UserSocialAuth

13

你可以通过Facebook的API来实现这个功能。首先,你需要获取你的Facebook应用的令牌(FACEBOOK_APP_ACCESS_TOKEN),你可以在这个链接找到相关信息:https://developers.facebook.com/tools/accesstoken/,或者从social_user.extra_data['access_token']中获取。

然后,使用这个令牌,你就可以发送你需要的请求。例如,下面的代码可以获取已认证用户的所有朋友的信息,包括他们的ID、名字、位置和头像:

social_user = request.user.social_auth.filter(
    provider='facebook',
).first()
if social_user:
    url = u'https://graph.facebook.com/{0}/' \
          u'friends?fields=id,name,location,picture' \
          u'&access_token={1}'.format(
              social_user.uid,
              social_user.extra_data['access_token'],
          )
    request = urllib2.Request(url)
    friends = json.loads(urllib2.urlopen(request).read()).get('data')
    for friend in friends:
        # do something

根据你想要获取的信息,你可以在这里设置权限:https://developers.facebook.com/apps/ -> 你的应用 -> 应用详情 -> 应用中心权限。

或者你也可以在settings.py文件中设置你的权限:

SOCIAL_AUTH_FACEBOOK_SCOPE = [
    'email',
    'user_friends',
    'friends_location',
]

撰写回答