'Parse the URI query for code and state.
If the resource owner grants the access request, the authorization
server issues an authorization code and delivers it to the client by
adding the following parameters to the query component of the
redirection URI using the "application/x-www-form-urlencoded" format:
code
REQUIRED.  The authorization code generated by the
authorization server.  The authorization code MUST expire
shortly after it is issued to mitigate the risk of leaks.  A
maximum authorization code lifetime of 10 minutes is
RECOMMENDED.  The client MUST NOT use the authorization code
more than once.  If an authorization code is used more than
once, the authorization server MUST deny the request and SHOULD
revoke (when possible) all tokens previously issued based on
that authorization code.  The authorization code is bound to
the client identifier and redirection URI.
state
REQUIRED if the "state" parameter was present in the client
authorization request.  The exact value received from the
client.'

def parse_request_uri_response(self, uri, state=None):

    response = parse_authorization_code_response(uri, state=state)
    self._populate_attributes(response)
    return response
