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