requests-oauthlib
requests-oauthlib copied to clipboard
State not equal in request and response
Getting an error oauthlib.oauth2.rfc6749.errors.MismatchingStateError: (mismatching_state) CSRF Warning! State not equal in request and response
@router.get("/github", response_class=RedirectResponse)
async def github():
authorization_url, state = github_oauth.authorization_url(authorization_base_url)
return authorization_url
@router.get("/callback")
async def authorize(code: str):
github_oauth.fetch_token(
token_url, client_secret=client_secret, authorization_response=code
)
r = github_oauth.get("https://api.github.com/user")
but when I log state inside `github` function it logs same as in the query param `state` of the callback url
Hi,
Can you tell us how are you creating github_oauth and when? We can't see how are you using the state variable in this example ?
Thanks
I experienced a similar issue re: not being able to exchange tokens due to the state parameter. Turns out it's because the OAuthSession keeps track of the state it generated earlier and then there is validation against the authorization_response if that parameter is used.
You can by-pass the state validation by passing in the code parameter versus the authorization_response parameter, i.e.
oauth_client.fetch_token(token_url, client_secret=client_secret, code=code)