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

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


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',]


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