Python Social Auth for Django raises Authforbidden exception Python Social Auth for Django raises Authforbidden exception django django

Python Social Auth for Django raises Authforbidden exception


  1. Need to set value for SOCIAL_AUTH_LOGIN_ERROR_URL in settings.py
  2. Extend SocialAuthExceptionMiddleware class & need to overwrite the "get_message" method
  3. 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.