Example #1
0
def _create_or_update_facebook_user(profile, access_token, expires):
    """Creates or updates a facebook user profile in local database.
    """
    user_is_created = False
    try:
        fb_user = FacebookUser.objects.get(fb_id=profile['id'])
    except FacebookUser.DoesNotExist:
        user = User.objects.create( \
            first_name=profile['first_name'],
            last_name=profile['last_name'],
            username='******' + profile['id']
        )
        user_is_created = True
        
    if user_is_created:
        fb_user = FacebookUser()
        fb_user.fb_id = profile['id']
        fb_user.user = user
    else:
        fb_user.user.first_name = profile['first_name']
        fb_user.last_name = profile['last_name']
        
    fb_user.fb_username = profile['username']
    fb_user.access_token = access_token
    fb_user.expiry_at = datetime.datetime.now() + \
        datetime.timedelta(seconds=int(expires))    
    fb_user.save()
    
    return fb_user
def _create_or_update_facebook_user(profile, access_token, expires):
    """Creates or updates a facebook user profile in local database.
    """
    user_is_created = False
    try:
        fb_user = FacebookUser.objects.get(fb_id=profile['id'])
    except FacebookUser.DoesNotExist:
        user = User.objects.create( \
            first_name=profile['first_name'],
            last_name=profile['last_name'],
            username='******' + profile['id']
        )
        user_is_created = True

    if user_is_created:
        fb_user = FacebookUser()
        fb_user.fb_id = profile['id']
        fb_user.user = user
    else:
        fb_user.user.first_name = profile['first_name']
        fb_user.last_name = profile['last_name']

    fb_user.fb_username = profile['username']
    fb_user.access_token = access_token
    fb_user.expiry_at = datetime.datetime.now() + \
        datetime.timedelta(seconds=int(expires))
    fb_user.save()

    return fb_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.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'],
                    email=fb_profile['email'],
                )

        fb_user.save()
        
        return fb_user.user