Example #1
0
    def authenticate(self, oauth_token, fb_id, name, user_id=None):
        """Authenticates user via Facebook API and saves user information.
        """
        try:
            # Find existing user
            facebook_user = FacebookProfile.objects.get(pk=fb_id, name=name)
            user = facebook_user.user

            # Update user's access token
            facebook_user.oauth_token = oauth_token
            facebook_user.save()
            
            # Set last visit to now
            user.userprofile.last_visit_date = datetime.now()
            user.userprofile.save()

        except FacebookProfile.DoesNotExist: # If requested user has not yet been registered
            # Create or get User and add FacebookProfile
            if user_id == None:
                user = User.objects.create_user(fb_id)
                user.save()
            
                # Create UserProfile to hold information
                userprofile = UserProfile(user=user)
                userprofile.save()
            
            else:
                user = User.objects.get(pk=user_id)

            facebook_user = FacebookProfile(user=user, pk=fb_id, oauth_token=oauth_token)
            facebook_user.save()

        return user