Я настроен django social auth's принимать только от Google по электронной почте, но Google показывает этот экран оповещения пользователя приложения, что пол, дата рождения, картина, язык будет собирать:Джанго социальной аутентификации ограничение пользовательских данных
Мой Джанго-социально-аутентификации конфигурации выглядит следующим образом:
WHITE_LISTED_DOMAINS = [ 'some_domain', ]
GOOGLE_WHITE_LISTED_DOMAINS = WHITE_LISTED_DOMAINS
SOCIAL_AUTH_EXTRA_DATA = False
#LOGIN_ERROR_URL = '/login-error/' Not set
#SOCIAL_AUTH_DEFAULT_USERNAME = 'new_social_auth_user' Not set
#GOOGLE_CONSUMER_KEY = '' Not set
#GOOGLE_CONSUMER_SECRET = '' Not set
#GOOGLE_OAUTH2_CLIENT_ID = '' Not set
#GOOGLE_OAUTH2_CLIENT_SECRET = '' Not set
SOCIAL_AUTH_USERNAME_IS_FULL_EMAIL = False
SOCIAL_AUTH_PROTECTED_USER_FIELDS = ['email',]
INSTALLED_APPS = (
'django.contrib.auth',
...
'social_auth',
)
Как я могу сделать, чтобы избежать этого Google сообщение?
EDITED
У меня есть движение к GoogleOauth2 AUTH и наследовать и изменить Google бэкенд:
from social_auth.backends.google import *
GOOGLE_OAUTH2_SCOPE = ['https://www.googleapis.com/auth/userinfo.email',]
class GoogleOAuth2(BaseOAuth2):
"""Google OAuth2 support"""
AUTH_BACKEND = GoogleOAuth2Backend
AUTHORIZATION_URL = 'https://accounts.google.com/o/oauth2/auth'
ACCESS_TOKEN_URL = 'https://accounts.google.com/o/oauth2/token'
REVOKE_TOKEN_URL = 'https://accounts.google.com/o/oauth2/revoke'
REVOKE_TOKEN_METHOD = 'GET'
SETTINGS_SECRET_NAME = 'GOOGLE_OAUTH2_CLIENT_SECRET'
SCOPE_VAR_NAME = 'GOOGLE_OAUTH_EXTRA_SCOPE'
DEFAULT_SCOPE = GOOGLE_OAUTH2_SCOPE
REDIRECT_STATE = False
print DEFAULT_SCOPE #<------ to be sure
def user_data(self, access_token, *args, **kwargs):
"""Return user data from Google API"""
return googleapis_profile(GOOGLEAPIS_PROFILE, access_token)
@classmethod
def revoke_token_params(cls, token, uid):
return {'token': token}
@classmethod
def revoke_token_headers(cls, token, uid):
return {'Content-type': 'application/json'}
Но Google по-прежнему запрашивать данные профиля, профиль по-прежнему в сфере:
работает нормально, если я модифицируют вручную кодом социально-Идент вместо наследования:
def get_scope(self):
return ['https://www.googleapis.com/auth/userinfo.email',]
Что такое случилось с моим кодом?
Вы определили новый бэкэнд в 'AUTHENTICATION_BACKENDS'? – omab
Да, и 'print DEFAULT_SCOPE' outpùt - это новая область, но ... У меня есть еще одна печать в ваш код django-auth, а выходные данные печати включают userinfo.profile. – danihp
Что произойдет, если вы переопределите 'get_scope()' в новом классе? Также удалите другой сервер из той же настройки. – omab