Как получить электронную почту пользователя с помощью python social auth с помощью facebook и сохранить его

Я пытаюсь реализовать python-social-auth в django.

Я хочу, чтобы пользователи аутентифицировались через facebook и сохраняли их электронную почту.

Я могу проверять подлинность пользователей, но расширенное разрешение для электронной почты не появляется в поле аутентификации в facebook и не хранит адрес электронной почты в базе данных.

В settings.py у меня есть следующее:

SOCIAL_AUTH_FACEBOOK_KEY='xxx'
SOCIAL_AUTH_FACEBOOK_SECRET='xxx'
FACEBOOK_EXTENDED_PERMISSIONS = ['email']

AUTHENTICATION_BACKENDS = (
    'social.backends.facebook.FacebookOAuth2',
    'social.backends.email.EmailAuth',
    'django.contrib.auth.backends.ModelBackend',
)

LOGIN_URL = '/login/'
LOGIN_REDIRECT_URL = '/done/'
LOGOUT_REDIRECT_URL = '/'
URL_PATH = ''
SOCIAL_AUTH_STRATEGY = 'social.strategies.django_strategy.DjangoStrategy'
SOCIAL_AUTH_STORAGE = 'social.apps.django_app.default.models.DjangoStorage'

SOCIAL_AUTH_PIPELINE = (
    'social.pipeline.social_auth.social_details',
    'social.pipeline.social_auth.social_uid',
    'social.pipeline.social_auth.auth_allowed',
    'social.pipeline.social_auth.social_user',
    'social.pipeline.user.get_username',
    'social.pipeline.social_auth.associate_by_email',
    # 'users.pipeline.require_email',
    'social.pipeline.mail.mail_validation',
    'social.pipeline.user.create_user',
    'social.pipeline.social_auth.associate_user',
    'social.pipeline.social_auth.load_extra_data',
    'social.pipeline.user.user_details'
)

Диалоговое окно facebook...

enter image description here

Как я могу это решить?

Ответы

Ответ 1

После некоторых изменений в API входа в Facebook - API Facebook Graph v2.4 Вам нужно будет добавить эти строки для получения электронной почты

SOCIAL_AUTH_FACEBOOK_SCOPE = ['email']
SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = {
    'fields': 'id,name,email', 
}

Ответ 3

Добавьте это в свой файл settings.py

SOCIAL_AUTH_FACEBOOK_SCOPE = ['email']

Ответ 4

Вы делаете это на тестовом сайте?

Перечитайте документацию, пожалуйста: [https://python-social-auth.readthedocs.io/en/latest/backends/facebook.html#oauth2][1]

Это говорит:

Если вы определите URL-адрес перенаправления на странице настройки Facebook, не задавайте http://127.0.0.1:8000 или http://localhost:8000, потому что он не будет работать при тестировании