Пример #1
0
    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
Пример #2
0
    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