amazon-cognito-identity-js icon indicating copy to clipboard operation
amazon-cognito-identity-js copied to clipboard

Missing required parameter REFRESH_TOKEN

Open newtriks opened this issue 8 years ago • 3 comments

When I get the current user from local cache i.e. user = userPool.getCurrentUser(), I then attempt to get a session using user.getSession().

This is throwing the following error in response to a POST request to https://cognito-idp.eu-west-1.amazonaws.com/:

{"__type":"InvalidParameterException","message":"Missing required parameter REFRESH_TOKEN"}

Digging in the debugger it results from aws-cognito-sdk.js:1280 where the httpRequestBody looks like: "{"ClientId":"my_client_id","AuthFlow":"REFRESH_TOKEN_AUTH","AuthParameters":{"REFRESH_TOKEN":"","DEVICE_KEY":"my_device_key"}}" which is called by the getSession request in amazon-cognito-identity.js.

So, it appears the session has expired and requires renewing but how do I do this ideally without it throwing errors in the console by making this HTTP request which has a possibility of failing?

Should I by default renew the session prior to making this call?

newtriks avatar Aug 26 '16 11:08 newtriks

The flow you describe should be correct. There was a small issue in the past where doing multiple calls to refreshSession would overwrite the refresh token with an empty value even if there was no refresh token retrieved (calling refreshSession doesn't retrieve a new refresh token, it only retrieves an access token and an id token). This was fixed in the following pull request so it should work now unless it's a different problem.

https://github.com/aws/amazon-cognito-identity-js/commit/470da21a16be5afaab2cfc6698278dd7bef5b013#diff-26892805fc0b4c2b37c713f88295be13

itrestian avatar Aug 29 '16 17:08 itrestian

Hi, does this issue still occur?

itrestian avatar Oct 25 '16 21:10 itrestian

Sorry, this was a POC and I completed it a while back, AFAIK the issue persisted.

newtriks avatar Oct 26 '16 09:10 newtriks