From: Duccio C Date: Thu, 19 May 2011 11:39:54 +0000 (+0200) Subject: Foursquare support X-Git-Url: https://git.parisson.com/?a=commitdiff_plain;h=4f53065e1b42da98fc3f241407e68ada0b1922c5;p=django-social-auth.git Foursquare support --- diff --git a/social_auth/backends/contrib/foursquare.py b/social_auth/backends/contrib/foursquare.py new file mode 100755 index 0000000..9743ff8 --- /dev/null +++ b/social_auth/backends/contrib/foursquare.py @@ -0,0 +1,54 @@ +import urllib + +from django.utils import simplejson + +from social_auth.backends import BaseOAuth2, OAuthBackend, USERNAME + + +FOURSQUARE_SERVER = 'foursquare.com' +FOURSQUARE_AUTHORIZATION_URL = 'https://foursquare.com/oauth2/authenticate' +FOURSQUARE_ACCESS_TOKEN_URL = 'https://foursquare.com/oauth2/access_token' +FOURSQUARE_CHECK_AUTH = 'https://api.foursquare.com/v2/users/self' + + +class FoursquareBackend(OAuthBackend): + name = 'foursquare' + + def get_user_id(self, details, response): + return response['response']['user']['id'] + + def get_user_details(self, response): + """Return user details from Foursquare account""" + firstName = response['response']['user']['firstName'] + lastName = response['response']['user']['lastName'] + email = response['response']['user']['contact']['email'] + + return {USERNAME: firstName + ' ' + lastName, + 'first_name': firstName, + 'last_name': lastName, + 'email': email} + + +class FoursquareAuth(BaseOAuth2): + """Foursquare OAuth mechanism""" + AUTHORIZATION_URL = FOURSQUARE_AUTHORIZATION_URL + ACCESS_TOKEN_URL = FOURSQUARE_ACCESS_TOKEN_URL + SERVER_URL = FOURSQUARE_SERVER + AUTH_BACKEND = FoursquareBackend + SETTINGS_KEY_NAME = 'FOURSQUARE_CONSUMER_KEY' + SETTINGS_SECRET_NAME = 'FOURSQUARE_CONSUMER_SECRET' + + def user_data(self, access_token): + """Loads user data from service""" + params = {'oauth_token': access_token,} + url = FOURSQUARE_CHECK_AUTH + '?' + urllib.urlencode(params) + try: + return simplejson.load(urllib.urlopen(url)) + except ValueError: + return None + + +# Backend definition +BACKENDS = { + 'foursquare': FoursquareAuth, +} \ No newline at end of file diff --git a/social_auth/backends/foursquare.py b/social_auth/backends/foursquare.py deleted file mode 100755 index 9743ff8..0000000 --- a/social_auth/backends/foursquare.py +++ /dev/null @@ -1,54 +0,0 @@ -import urllib - -from django.utils import simplejson - -from social_auth.backends import BaseOAuth2, OAuthBackend, USERNAME - - -FOURSQUARE_SERVER = 'foursquare.com' -FOURSQUARE_AUTHORIZATION_URL = 'https://foursquare.com/oauth2/authenticate' -FOURSQUARE_ACCESS_TOKEN_URL = 'https://foursquare.com/oauth2/access_token' -FOURSQUARE_CHECK_AUTH = 'https://api.foursquare.com/v2/users/self' - - -class FoursquareBackend(OAuthBackend): - name = 'foursquare' - - def get_user_id(self, details, response): - return response['response']['user']['id'] - - def get_user_details(self, response): - """Return user details from Foursquare account""" - firstName = response['response']['user']['firstName'] - lastName = response['response']['user']['lastName'] - email = response['response']['user']['contact']['email'] - - return {USERNAME: firstName + ' ' + lastName, - 'first_name': firstName, - 'last_name': lastName, - 'email': email} - - -class FoursquareAuth(BaseOAuth2): - """Foursquare OAuth mechanism""" - AUTHORIZATION_URL = FOURSQUARE_AUTHORIZATION_URL - ACCESS_TOKEN_URL = FOURSQUARE_ACCESS_TOKEN_URL - SERVER_URL = FOURSQUARE_SERVER - AUTH_BACKEND = FoursquareBackend - SETTINGS_KEY_NAME = 'FOURSQUARE_CONSUMER_KEY' - SETTINGS_SECRET_NAME = 'FOURSQUARE_CONSUMER_SECRET' - - def user_data(self, access_token): - """Loads user data from service""" - params = {'oauth_token': access_token,} - url = FOURSQUARE_CHECK_AUTH + '?' + urllib.urlencode(params) - try: - return simplejson.load(urllib.urlopen(url)) - except ValueError: - return None - - -# Backend definition -BACKENDS = { - 'foursquare': FoursquareAuth, -} \ No newline at end of file