2016-04-21 4 views
0

Я могу успешно войти в систему, используя facebook и google, но все, что я могу отобразить, - это имя пользователя. Теперь я хочу показать имя пользователя. Как мне это сделать? Я прочитал, что facebook не предоставляет данные, такие как идентификатор электронной почты по умолчанию, и детали, подобные этим, должны быть запрошены. Я добавил, но я не знаю, как эти данные должны быть доступны. settings.pyКак получить адрес электронной почты пользователя, используя django social auth для facebook и google

SOCIAL_AUTH_FACEBOOK_KEY = '***' 
SOCIAL_AUTH_FACEBOOK_SECRET = '***' 
SOCIAL_AUTH_FACEBOOK_SCOPE = ['email'] 
FACEBOOK_EXTENDED_PERMISSIONS = ['email'] 
SOCIAL_AUTH_FACEBOOK_PROFILE_EXTRA_PARAMS = { 
    'locale': 'ru_RU', 
    'fields': 'id, name, email, age_range' 
} 

SOCIAL_AUTH_GOOGLE_OAUTH2_KEY = '***' 
SOCIAL_AUTH_GOOGLE_OAUTH2_SECRET = '***' 
GOOGLE_DISPLAY_NAME = '' 


LOGIN_REDIRECT_URL = '/' 

# Application definition 

INSTALLED_APPS = (
    'django.contrib.admin', 
    'django.contrib.auth', 
    'django.contrib.contenttypes', 
    'django.contrib.sessions', 
    'django.contrib.messages', 
    'django.contrib.staticfiles', 
    'thirdauth', 
    'social.apps.django_app.default', 
) 

TEMPLATE_CONTEXT_PROCESSORS = (
    'django.contrib.auth.context_processors.auth', 
    'django.core.context_processors.debug', 
    'django.core.context_processors.i18n', 
    'django.core.context_processors.media', 
    'django.core.context_processors.static', 
    'django.core.context_processors.tz', 
    'django.contrib.messages.context_processors.messages', 
    'social.apps.django_app.context_processors.backends', 
    'social.apps.django_app.context_processors.login_redirect', 
) 

AUTHENTICATION_BACKENDS = (
    'social.backends.facebook.FacebookOAuth2', 
    'social.backends.google.GoogleOAuth2', 
    'social.backends.twitter.TwitterOAuth', 
    'django.contrib.auth.backends.ModelBackend', 
) 

views.py

context = RequestContext(request, 
          {'request': request, 
          'user': request.user}) 
    return render_to_response('home.html', 
          context_instance=context) 

Любая помощь будет appriciated.

ответ

0

В django есть несколько отличных пакетов для обработки социальной аутентификации. Я предпочитаю, чтобы вы использовали django-allauth. У Allauth уже есть этот прецедент. Когда пользователю предлагается войти в систему с помощью facebook, allauth получает электронную почту после запроса согласия на экране согласия. И вы можете проверить эти электронные письма и учетную запись пользователя, используя панель администратора django один раз allauth setup и миграции выполняются.