def authenticate(self, token=None, request=None): args = { 'client_id': settings.FACEBOOK_APP_ID, 'client_secret': settings.FACEBOOK_APP_SECRET, 'redirect_uri': request.build_absolute_uri( reverse('facebook_oauth.views.authenticate_view')), 'code': token, } target = urllib.urlopen( 'https://graph.facebook.com/oauth/access_token?' + urllib.urlencode(args)).read() response = cgi.parse_qs(target) access_token = response['access_token'][-1] profile_json = urllib.urlopen( 'https://graph.facebook.com/me?' + urllib.urlencode(dict(access_token=access_token))) fb_profile = simplejson.load(profile_json) try: fb_user = FacebookUser.objects.get( facebook_id=str(fb_profile['id'])) except FacebookUser.DoesNotExist: fb_user = FacebookUser(facebook_id=str(fb_profile['id'])) fb_user.access_token = access_token fb_user.profile_json = str(profile_json) if not fb_user.user_id: try: fb_user.user = User.objects.get(username='******' % fb_user.facebook_id, ) except User.DoesNotExist: fb_user.user, created = User.objects.get_or_create( username='******' % fb_user.facebook_id, first_name=fb_profile['first_name'], last_name=fb_profile['last_name'], ) fb_user.save() return fb_user.user
def authenticate(self, token=None, request=None): args = { 'client_id': settings.FACEBOOK_APP_ID, 'client_secret': settings.FACEBOOK_APP_SECRET, 'redirect_uri': request.build_absolute_uri(reverse('facebook_oauth.views.authenticate_view')), 'code': token, } target = urllib.urlopen('https://graph.facebook.com/oauth/access_token?' + urllib.urlencode(args)).read() response = cgi.parse_qs(target) access_token = response['access_token'][-1] profile_json = urllib.urlopen('https://graph.facebook.com/me?' + urllib.urlencode(dict(access_token=access_token))) fb_profile = simplejson.load(profile_json) try: fb_user = FacebookUser.objects.get(facebook_id=str(fb_profile['id'])) except FacebookUser.DoesNotExist: fb_user = FacebookUser(facebook_id=str(fb_profile['id'])) fb_user.access_token = access_token fb_user.profile_json = str(profile_json) if not fb_user.user_id: try: fb_user.user = User.objects.get(username='******' % fb_user.facebook_id,) except User.DoesNotExist: fb_user.user, created = User.objects.get_or_create( username='******' % fb_user.facebook_id, first_name=fb_profile['first_name'], last_name=fb_profile['last_name'], ) fb_user.save() return fb_user.user