]> git.parisson.com Git - django-social-auth.git/commitdiff
Store OAuth access token by default
authorMatías Aguirre <matiasaguirre@gmail.com>
Fri, 19 Nov 2010 19:47:17 +0000 (17:47 -0200)
committerMatías Aguirre <matiasaguirre@gmail.com>
Fri, 19 Nov 2010 19:47:17 +0000 (17:47 -0200)
README.rst
social_auth/backends.py
social_auth/base.py
social_auth/models.py

index aed6993e0bf88031fd0e07e49c6108357ead7daa..9dbbea3b24123aabc006f95372a1a0e3d0280810 100644 (file)
@@ -86,6 +86,10 @@ or::
 
 final user name will have an integer suffix in case it's already taken.
 
+- OAuth authentication will store access_token by default, set this value to False to avoid such behavior::
+
+    SOCIAL_AUTH_EXTRA_DATA = False
+
 
 ------
 OpenId
index 2709c4414e8f308cead9536f9eee80880a2cdad5..dcf357106f800e8fe2d8a635647b686d63df58f8 100644 (file)
@@ -13,6 +13,10 @@ class OAuthBackend(SocialAuthBackend):
         "OAuth providers return an unique user id in response"""
         return response['id']
 
+    def extra_data(self, user, uid, response, details):
+        """Return access_token to store in extra_data field"""
+        return response.get('access_token', '')
+
 
 class TwitterBackend(OAuthBackend):
     """Twitter OAuth authentication backend"""
index 48204aade3b22e828822d0e798fa486fbdfef877..70495f8db83da36f13f550007e4ae113ff7b58b5 100644 (file)
@@ -111,13 +111,22 @@ class SocialAuthBackend(ModelBackend):
                                                .get(provider=self.name,
                                                     uid=uid)
         except UserSocialAuth.DoesNotExist:
+            if getattr(settings, 'SOCIAL_AUTH_EXTRA_DATA', True):
+                extra_data = self.extra_data(user, uid, response, details)
+            else:
+                extra_data = ''
             user_oauth = UserSocialAuth.objects.create(user=user, uid=uid,
-                                                       provider=self.name)
+                                                       provider=self.name,
+                                                       extra_data=extra_data)
         else:
             if user_oauth.user != user:
-                raise ValueError, 'The identity has already been claimed'
+                raise ValueError, 'Identity already claimed'
         return user_oauth
 
+    def extra_data(self, user, uid, response, details):
+        """Return default blank user extra data"""
+        return ''
+
     def update_user_details(self, user, details):
         """Update user details with new (maybe) data"""
         first_name = details.get('firstname') or user.first_name
index cf71f7296613305864f550e4ca7136b7fe8d9a74..63cd12b47b68f5d9f90815a430f02023cf58510a 100644 (file)
@@ -8,6 +8,7 @@ class UserSocialAuth(models.Model):
     user = models.ForeignKey(User, related_name='social_auth')
     provider = models.CharField(max_length=32)
     uid = models.TextField()
+    extra_data = models.TextField(default='', blank=True)
 
     class Meta:
         """Meta data"""