Source

django-publicauth / publicauth / backends / facebook.py

Diff from to

publicauth/backends/facebook.py

 from __future__ import absolute_import 
 
-from django.utils.translation import ugettext as _
 from django.contrib import messages
-from django.contrib import auth
 
 from annoying.exceptions import Redirect
 
 from publicauth.backends import BaseBackend
-from publicauth import settings
 from publicauth import lang
 
 
 class FacebookBackend(BaseBackend):
     
-    def validate_response(self, request):
+    def validate(self, request, data):
         if not request.facebook.validate_cookie_signature(request.COOKIES):
-            messages.add_message(request, messages.SUCCESS, lang.FACEBOOK_INVALID_RESPONSE)
+            messages.add_message(request, messages.ERROR, lang.FACEBOOK_INVALID_RESPONSE)
             raise Redirect('publicauth-login')
         else:
             uid = request.facebook.api_key
-            self.set_identity(int(request.COOKIES.get('%s_user' % uid)))
+            self.identity = request.COOKIES.get('%s_user' % uid)
+            return request.facebook
 
     def complete(self, request, response):
+        data = self.fill_extra_fields(request, self.get_extra_data(response))
+        request.session['extra'] = data
+        request.session['identity'] = self.identity
+        raise Redirect('publicauth-extra', 'facebook')
+
+    def get_extra_data(self, response):
         extra_fields = [i for i in self.PROFILE_MAPPING]
-        extra = request.facebook.users.getInfo([self.get_identity()], extra_fields)[0]
-        self.set_profile_fields(request, extra)
-
-        request.session['identity'] = self.get_identity()
-
-        raise Redirect('publicauth-social-extra', 'facebook')
-
+        return response.users.getInfo([self.identity], extra_fields)[0]
Tip: Filter by directory path e.g. /media app.js to search for public/media/app.js.
Tip: Use camelCasing e.g. ProjME to search for ProjectModifiedEvent.java.
Tip: Filter by extension type e.g. /repo .js to search for all .js files in the /repo directory.
Tip: Separate your search with spaces e.g. /ssh pom.xml to search for src/ssh/pom.xml.
Tip: Use ↑ and ↓ arrow keys to navigate and return to view the file.
Tip: You can also navigate files with Ctrl+j (next) and Ctrl+k (previous) and view the file with Ctrl+o.
Tip: You can also navigate files with Alt+j (next) and Alt+k (previous) and view the file with Alt+o.