问题 如何使用Python-Social-auth和Django检索Facebook好友的信息


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


2347
2018-03-21 00:57


起源

检查 stackoverflow.com/a/20998857/385822,该答案谈论用户喜欢,但一旦找到返回所需数据的Facebook API,同样可以应用于朋友。 - omab
谢谢@omab!我会尝试!!! :) - Bruno Paulino


答案:


你可以使用Facebook API来做到这一点。首先,您需要获取Facebook应用程序的令牌(FACEBOOK_APP_ACCESS_TOKENhttps://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',
]

13
2018-04-01 15:31



谢谢@ vero4ka。你真的帮帮我! :d - Bruno Paulino
我必须为Gmail用户获取电子邮件和access_token,social_user = request.user.social_auth.filter(provider ='google-oauth2')可以解决吗? - arshpreet


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


1
2018-01-02 22:00