Python Social Auth for Django raises Authforbidden exception
- Need to set value for
SOCIAL_AUTH_LOGIN_ERROR_URL
in settings.py - Extend SocialAuthExceptionMiddleware class & need to overwrite the "get_message" method
- Handle error URL display the message to user.
For example
Middleware.py
from social_django.middleware import SocialAuthExceptionMiddlewareclass CustomSocialAuthExceptionMiddleware(SocialAuthExceptionMiddleware): def get_message(self, request, exception): default_msg = super(CustomSocialAuthExceptionMiddleware).get_message(request, exception) # in case of display default message return "Custom messages text write here."
settings.py
SOCIAL_AUTH_LOGIN_ERROR_URL = '/error_page/'MIDDLEWARE = ['...','path.to.custom.middleware.CustomSocialAuthExceptionMiddleware',]
URL.py
from django.conf.urls import urlfrom views import ErrorPageurlpatterns = [ url(r'^error_page/$', ErrorPage.as_view(), name="error-page"),]
view.py
from django.views.generic.base import TemplateViewclass ErrorPage(TemplateView): template_name = 'error.html'
error.html(template)
.... <body> {% if messages %} <ul class="messages"> {% for message in messages %} <li{% if message.tags %} class="{{ message.tags }}"{% endif %}>{{ message }} </li> {% endfor %} </ul> {% endif %} </body>....
If you are using django message framework. In case of not using django message framework, Middleware add message into GET parameter which you can display on error page.