Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

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

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 more information about their friends and invite them to my app. Thanks!

like image 808
Bruno Paulino Avatar asked Mar 21 '14 00:03

Bruno Paulino


People also ask

How does Django integrate with Facebook login?

Run Your Django Project.Visit login page in the browser using localhost URL. It will look like this in the browser. Click on Log with Facebook and follow the steps. After log in, you will be redirected to the home page.

What is Django Social Auth?

Django Social Auth is an easy way to setup social authentication/authorization. mechanism for Django projects. Crafted using base code from django-twitter-oauth_ and django-openid-auth_, it implements a common interface to define new authentication providers from. third parties.


2 Answers

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

like image 113
Michael Avatar answered Oct 12 '22 02:10

Michael


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',
]
like image 26
cansadadeserfeliz Avatar answered Oct 12 '22 00:10

cansadadeserfeliz