How to retrieve Facebook friend's information with Python-Social-auth and Django

前端 未结 2 807
耶瑟儿~
耶瑟儿~ 2020-12-28 09:50

How can I retrieve Facebook friend\'s information using Python-Social-auth and Django? I already retrieve a profile information and authenticate the user, but I want to get

相关标签:
2条回答
  • 2020-12-28 10:03

    You can do it using Facebook API. Firstly, you need obtain the token of your Facebook application (FACEBOOK_APP_ACCESS_TOKEN) https://developers.facebook.com/tools/accesstoken/ or from social_user.extra_data['access_token']

    Then with this token you can send the requests you need, for example, this code gets all the friends of the authenticated user with their id, name, location, picture:

    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
    

    Depending on what fields you want to get you can set the permissions here: https://developers.facebook.com/apps/ -> Your App -> App Details -> App Centre Permissions

    or set your permissions in settings.py:

    SOCIAL_AUTH_FACEBOOK_SCOPE = [
        'email',
        'user_friends',
        'friends_location',
    ]
    
    0 讨论(0)
  • 2020-12-28 10:07

    Just some extra for the reply above. To get the token from extra_data you need to import the model with that data (took me a while to find this): from social.apps.django_app.default.models import UserSocialAuth

    0 讨论(0)
提交回复
热议问题