import logging

from django.contrib import messages
from django.http import HttpResponseRedirect, HttpResponse
from django.utils.encoding import force_text
from django.views.generic.base import View
from social_auth.exceptions import AuthFailed
from social_auth.views import complete


logger = logging.getLogger(__name__)


class AuthComplete(View):
    def get(self, request, *args, **kwargs):
        backend = kwargs.pop('backend')
        try:
            return complete(request, backend, *args, **kwargs)
        except AuthFailed as e:
            logger.error(e)
            messages.error(request, self.get_error_message())
            return HttpResponseRedirect(self.get_faiure_url())

        def get_error_message(self):
            if self.error_message:
                return self.error_message
            return "Your Google Apps domain isn't authorized for this app"

        def get_failure_url(self):
            if self.failure_url:
                return force_text(self.failure_url)
            return '/'


class LoginError(View):
    def get(self, request, *args, **kwargs):
        return HttpResponse(status=401)


import logging

from django.contrib import messages
from django.http import HttpResponseRedirect, HttpResponse
from django.views.generic.base import View
from social_auth.exceptions import AuthFailed
from social_auth.views import complete


logger = logging.getLogger(__name__)


class AuthComplete(View):
    def get(self, request, *args, **kwargs):
        backend = kwargs.pop('backend')
        try:
            return complete(request, backend, *args, **kwargs)
        except AuthFailed as e:
            logger.error(e)
            messages.error(request, "Your Google Apps domain isn't authorized for this app")
            return HttpResponseRedirect('/')


class LoginError(View):
    def get(self, request, *args, **kwargs):
        return HttpResponse(status=401)



--- 
+++ 
@@ -2,6 +2,7 @@
 
 from django.contrib import messages
 from django.http import HttpResponseRedirect, HttpResponse
+from django.utils.encoding import force_text
 from django.views.generic.base import View
 from social_auth.exceptions import AuthFailed
 from social_auth.views import complete
@@ -17,12 +18,21 @@
             return complete(request, backend, *args, **kwargs)
         except AuthFailed as e:
             logger.error(e)
-            messages.error(request, "Your Google Apps domain isn't authorized for this app")
-            return HttpResponseRedirect('/')
+            messages.error(request, self.get_error_message())
+            return HttpResponseRedirect(self.get_faiure_url())
+
+        def get_error_message(self):
+            if self.error_message:
+                return self.error_message
+            return "Your Google Apps domain isn't authorized for this app"
+
+        def get_failure_url(self):
+            if self.failure_url:
+                return force_text(self.failure_url)
+            return '/'
 
 
 class LoginError(View):
     def get(self, request, *args, **kwargs):
         return HttpResponse(status=401)
 
-
Clean up the AuthComplete API a little
