]> git.parisson.com Git - django-social-auth.git/commitdiff
Merge branch 'master' of https://github.com/bedspax/django-social-auth
authorDuccio C <bedspax@gmail.com>
Thu, 19 May 2011 02:20:53 +0000 (04:20 +0200)
committerDuccio C <bedspax@gmail.com>
Thu, 19 May 2011 02:20:53 +0000 (04:20 +0200)
1  2 
social_auth/backends/foursquare.py

index 0000000000000000000000000000000000000000,0000000000000000000000000000000000000000..9743ff8dbe22240e44346c001d6bbc0269d1c6b4
new file mode 100755 (executable)
--- /dev/null
--- /dev/null
@@@ -1,0 -1,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,
++}