Как получить информацию о друзьях Facebook с помощью Python-Social-auth и Django

Как я могу получить информацию о друзьях Facebook, используя Python-Social-auth и Django? Я уже получаю информацию о профиле и аутентифицирую пользователя, но хочу получить дополнительную информацию о своих друзьях и пригласить их в свое приложение. Спасибо!

Ответ 1

Вы можете сделать это с помощью API Facebook. Во-первых, вам нужно получить токен вашего приложения Facebook (FACEBOOK_APP_ACCESS_TOKEN) https://developers.facebook.com/tools/accesstoken/ или от social_user.extra_data['access_token']

Затем с помощью этого токена вы можете отправлять запросы, которые вам нужны, например, этот код получает всех друзей аутентифицированного пользователя с их идентификатором, именем, местоположением, изображением:

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/ → Ваше приложение → Сведения о приложении → Разрешения на App Center

или установите разрешения в settings.py:

SOCIAL_AUTH_FACEBOOK_SCOPE = [
    'email',
    'user_friends',
    'friends_location',
]

Ответ 2

Только некоторые дополнительные для ответа выше. Чтобы получить маркер из extra_data, вам нужно импортировать модель с этими данными (мне понадобилось некоторое время, чтобы найти это): from social.apps.django_app.default.models import UserSocialAuth