Python Social Auth с Django - как получить дополнительные данные? - PullRequest
0 голосов
/ 31 октября 2018

Для моего первого проекта Django я хотел подключить Python Social Auth для социальной аутентификации (а именно Facebook).
Джанго == 2,0
социально-Auth-приложение-Джанго == 2.1.0
социально-Auth-жильный == 1.7.0

Как я могу получить дополнительные данные из профиля авторизованного пользователя? Моя цель состоит в том, чтобы отфильтровать зарегистрированных пользователей в пользовательские группы на основе групп FB, членами которых они являются. Однако на данный момент я даже не могу получить письмо, только имя пользователя.

В моих settings.py:

SOCIAL_AUTH_FACEBOOK_KEY = 'xxxx'
SOCIAL_AUTH_FACEBOOK_SECRET = 'xxxx'
SOCIAL_AUTH_FACEBOOK_SCOPE = ['email', 'groups_access_member_info']
SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = {
    'fields': 'id, name, email',
    'edges': 'groups'
}

Трубопровод является основным трубопроводом:

SOCIAL_AUTH_PIPELINE = (
    'social_core.pipeline.social_auth.social_details',
    'social_core.pipeline.social_auth.social_uid',
    'social_core.pipeline.social_auth.auth_allowed',
    'social_core.pipeline.social_auth.social_user',
    'social_core.pipeline.user.get_username',
    'social_core.pipeline.user.create_user',
    'social_core.pipeline.social_auth.associate_user',
    'social_core.pipeline.social_auth.load_extra_data',
    'social_core.pipeline.user.user_details',
)

Я не прошу полный код, любая помощь будет принята с благодарностью.

Заранее спасибо!

1 Ответ

0 голосов
/ 31 октября 2018

python-social-auth будет просто хранить базовую пользовательскую информацию, необходимую для заполнения полей модели, если что-либо дополнительное является частью полезной нагрузки аутентификации от провайдера и настроено в параметре EXTRA_DATA, оно также будет сохранено в социальный класс как часть атрибута extra_data.

Тем не менее, python-social-auth не будет вызывать какой-либо другой API в провайдере для извлечения дополнительных данных, чтобы это работало, вам нужно улучшить PIPELINE с помощью ваших методов, которые будут вызывать эти дополнительные конечные точки в Facebook, один раз с ответ, вы можете сохранить его, если он соответствует вашему проекту.

Чтобы отладить то, что по умолчанию поступает от провайдера, добавьте конвейер debug между шагами (social_core.pipeline.debug.debug). Если то, что вы ищете, уже является частью полезной нагрузки, запишите имя ключа и добавьте его в настройку EXTRA_DATA. Если это не так, вам нужно добавить метод, который будет вызывать API Facebook для получения дополнительной информации.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...