def auth_complete(self, *args, **kwargs): """Return user, might be logged in""" # Multiple unauthorized tokens are supported (see #521) name = self.AUTH_BACKEND.name + "unauthorized_token_name" token = None unauthed_tokens = self.request.session.get(name) or [] if not unauthed_tokens: raise AuthTokenError(self, "Missing unauthorized token") for unauthed_token in unauthed_tokens: token = unauthed_token if not isinstance(unauthed_token, dict): token = parse_qs(unauthed_token) if token.get("oauth_token") == self.data.get("oauth_token"): unauthed_tokens = list( set(unauthed_tokens) - set([unauthed_token])) self.request.session[name] = unauthed_tokens self.request.session.modified = True break else: raise AuthTokenError(self, "Incorrect tokens") try: access_token = self.access_token(token) except HTTPError as e: if e.code == 400: raise AuthCanceled(self) else: raise return self.do_auth(access_token, *args, **kwargs)
def oauth_authorization_request(self, token): """Generate OAuth request to authorize token.""" if not isinstance(token, dict): token = parse_qs(token) params = self.auth_extra_arguments() or {} params.update(self.get_scope_argument()) params["oauth_token"] = token.get("oauth_token") params["redirect_uri"] = self.redirect_uri return self.AUTHORIZATION_URL + "?" + urlencode(params)