from django.dispatch import receiver
- from social_auth.signals import pre_save
+ from social_auth.signals import pre_update
from social_auth.backends import FacebookBackend
- @receiver(pre_save, sender=FacebookBackend)
+ @receiver(pre_update, sender=FacebookBackend)
def facebook_extra_values(sender, user, response, details):
user.gender = response.get('gender')
return True
FACEBOOK_APP_ID
FACEBOOK_API_SECRET
+- Optional setting::
+
+ FACEBOOK_EXTENDED_PERMISSIONS (list with the required permisions)
-----
Orkut
class FacebookAuth(BaseOAuth):
"""Facebook OAuth mechanism"""
- def __init__(self, request, redirect):
- super(FacebookAuth, self).__init__(request, redirect)
- if settings.DEBUG and self.redirect_uri:
- # Facebook doesn't accept custom ports
- self.redirect_uri = self.redirect_uri.replace(':8000', '')
def auth_url(self):
"""Returns redirect url"""
args = {'client_id': settings.FACEBOOK_APP_ID,
'redirect_uri': self.redirect_uri}
+ if hasattr(settings, 'FACEBOOK_EXTENDED_PERMISSIONS'):
+ args['scope'] = ','.join(settings.FACEBOOK_EXTENDED_PERMISSIONS)
return FACEBOOK_AUTHORIZATION_URL + '?' + urllib.urlencode(args)
def auth_complete(self, *args, **kwargs):
'first_name': response.get('first_name', ''),
'last_name': response.get('last_name', '')}
-
class OpenIDBackend(SocialAuthBackend):
"""Generic OpenID authentication backend"""
name = 'openid'