def request(self, method, url, access_token=None, **kwargs): ''' Make a request using an `access_token` obtained via the :func:`authorized_handler`. If no access_token is provided and a :func:`RauthServiceMixin.tokengetter` **was** provided, the :func:`RauthServiceMixin.tokengetter` will be called. :param method: Same as :func:`rauth.OAuth2Service.request`. :param url: Same as :func:`rauth.OAuth2Service.request`, except when a `base_url` was provided to the constructor, in which case the URL should be any valid endpoint after being :func:`urljoin` ed with the `base_url`. :param access_token: The `access_token` required to make requests against this service. :param kwargs: Any `kwargs` that can be passed to :func:`OAuth2Service.request`. ''' url = self._expand_url(url) if access_token is None and self.tokengetter_f is not None: access_token = self.tokengetter_f() # add in the access_token if 'params' not in kwargs: kwargs['params'] = {'access_token': access_token} elif 'access_token' not in kwargs['params']: # TODO: handle if the user sends bytes -> properly append 'access_token' kwargs['params']['access_token'] = access_token # call the parent implementation return RauthResponse(OAuth2Service.request(self, method, url, **kwargs))