def authenticate(self, oauth_token=None): if oauth_token is None: return None user_info = None try: api = TroveAPI(settings.TROVE_APP_KEY, settings.TROVE_APP_SECRET, ["photos"], oauth_token) user_info = api.get_user_info() except: return None try: trove_profile = UserProfile.objects.get(trove_user_id=user_info["trove_internal_id"]) return trove_profile.user except UserProfile.DoesNotExist: user = User() if user_info.has_key("trove_username"): user.username = user_info["trove_username"] else: user.username = user_info["trove_internal_id"] # We use the trove internal id if there is no user name user.first_name = user_info["first_name"] user.last_name = user_info["last_name"] user.save() trove_profile = UserProfile() trove_profile.trove_user_id = user_info["trove_internal_id"] trove_profile.trove_access_token_key = oauth_token.key trove_profile.trove_access_token_secret = oauth_token.secret trove_profile.user = user trove_profile.save() return user