Я добавляю логин google в свое приложение django для использования только в моем офисе. Логины работают нормально, но я пытаюсь добавить страницы ошибок. Я написал страницу ошибки входа в/login/error, которая дает немного информации о том, что пошло не так, но я не могу заставить django отображать эту страницу, когда это необходимо.Django python-social-auth перенаправление при сбое?
Вход в систему не удастся, если учетная запись gmail не входит в учетную запись наших компаний (*@myoffice.com) или когда пользователь отказывает в разрешении. Я бы хотел, чтобы он перенаправлял/login/error, но перенаправление никогда не работает.
Я попытался добавить
SOCIAL_AUTH_LOGIN_ERROR_URL = '/login/error/'
SOCIAL_AUTH_BACKEND_ERROR_URL = '/login/error/'
в мой файл settings.py. Не поймает ошибку, с которой я пытаюсь справиться с этой страницей. Я могу подтвердить, что/login/error работает правильно, и проблема заключается только в получении правильного перенаправления.
Любая помощь была бы принята с благодарностью.
Update: Heres некоторые больше кода, так как это было не так быстро исправить, как я надеялся
От settings.py (ключ и секрет опущен, белый список URL изменен)
INSTALLED_APPS = (
'django.contrib.admin',
'django.contrib.auth',
'django.contrib.contenttypes',
'django.contrib.sessions',
'django.contrib.messages',
'django.contrib.staticfiles',
'thelibrary',
'home',
'social.apps.django_app.default',
)
AUTHENTICATION_BACKENDS = (
'social.backends.google.GoogleOAuth2',
'django.contrib.auth.backends.ModelBackend',
)
LOGIN_REDIRECT_URL = '/'
SOCIAL_AUTH_GOOGLE_OAUTH2_WHITELISTED_DOMAINS = ['example.com']
SOCIAL_AUTH_LOGIN_ERROR_URL = '/login/error/'
SOCIAL_AUTH_BACKEND_ERROR_URL = '/login/error/'
Из моего шаблона, который запрашивает регистрацию пользователя
{% if user and not user.is_anonymous %}
Not yet implemented
{% else %}
Welcome guest!
<br />
Please <a href="{% url 'social:begin' 'google-oauth2' %}?next={{ request.path }}">Login with Google</a>
{% endif %}
Heres выход ошибки я получаю в консоли, когда запрос не
[21/Oct/2014 13:44:42] "GET /login/google-oauth2/ HTTP/1.1" 302 0
[21/Oct/2014 13:44:51] "GET /complete/google-oauth2/?state=3YjuxWntctsrg6emGEPfMjzeeP4NSazX&code=4/lobir0Y2ZZnEPnJRE99gjqhjZh2RbwJC2wfCrs5Zy9A.Envfd1PM7OcaXmXvfARQvtiwnetlkgI HTTP/1.1" 500 157344
Возможно, проблема заключается в том, что '' python-social-auth'' захватывает ваш URL ''/login/error/'', как если бы это был URL '' backend'' (например, ''/login/google- oauth2/''), поэтому он пытается попытаться войти в систему, используя бэкэнд '' error'', который, очевидно, не существует. Попробуйте изменить формат URL на ''/login-error'', чтобы узнать, работает ли это. – omab