11

如何使用 Python-Social-auth 和 Django 检索 Facebook 朋友的信息?我已经检索了个人资料信息并对用户进行身份验证,但我想获取有关他们朋友的更多信息并邀请他们加入我的应用程序。谢谢!

4

2 回答 2

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/ -> Your App -> App Details -> App Center Permissions

或设置您的权限settings.py

SOCIAL_AUTH_FACEBOOK_SCOPE = [
    'email',
    'user_friends',
    'friends_location',
]
于 2014-04-01T15:31:21.737 回答
1

上面的回复只是一些额外的。要从 extra_data 获取令牌,您需要使用该数据导入模型(我花了一段时间才找到它): from social.apps.django_app.default.models import UserSocialAuth

于 2017-01-02T22:00:13.030 回答