'Validate client, code etc, return body + headers'

@catch_errors_and_unavailability
def verify_request(self, uri, http_method=u'GET', body=None, headers=None, scopes=None):

    request = Request(uri, http_method, body, headers)
    request.token_type = self.find_token_type(request)
    request.scopes = scopes
    token_type_handler = self.tokens.get(request.token_type, self.default_token_type_handler)
    log.debug(u'Dispatching    token_type    %s    request    to    %r.', request.token_type, token_type_handler)
    return (token_type_handler.validate_request(request), request)
