2017-10-22 11 views
1

amazon-cognito-identity-jsを使用しているときに、ユーザーのトークン、つまりIDトークンをAmazon Cognitoでリフレッシュする際に問題が発生しています。AWS Cognito - 無効な更新トークン

私は成功し、ユーザーはトークンリフレッシュ取得していますが、私はdescribed here

として認証されていない「initiateAuthの要求を行うことにより、ユーザートークンをリフレッシュしようとしている「無効なのリフレッシュトークン」というメッセージと400不正な要求を取得しています

POST https://cognito-idp.us-east-1.amazonaws.com/ 400 (Bad Request)

Uncaught Error: Invalid Refresh Token.

無効な更新トークンを渡していると思われるのはなぜですか?

var reToken; 

var poolData = { 
    UserPoolId : 'us-east-1_XXXXXXXXX', 
    ClientId : 'XXXXXXXXXXXXXXXXXXXXXXXXXX' 
}; 

var CognitoUserPool = AmazonCognitoIdentity.CognitoUserPool; 
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData); 
var cognitoUser = userPool.getCurrentUser(); 

if (cognitoUser != null) { 

    cognitoUser.getSession(function(err, session) { 

     if (err) { 
      alert(err); 
      return; 
     } 

     reToken = session.refreshToken.token; 

    }); 

} 

var curDate = new Date(); 
var currentEpoch = Math.round(curDate.getTime()/1000); 
var issuedEpoch = store.get('issued'); 

var refreshParams = { 
    ClientId: 'XXXXXXXXXXXXXXXXXXXXXXXXXX', 
    AuthFlow: 'REFRESH_TOKEN_AUTH', 
    AuthParameters: { 'REFRESH_TOKEN': reToken } 
}; 

// 30 minutes = 1800 seconds 
if ((currentEpoch - issuedEpoch) >= 1800) { 

    userPool.client.makeUnauthenticatedRequest('initiateAuth', refreshParams, (err, authResult) => { 
     if (err) { 
      throw err 
     } 
     console.log(authResult) 
    }) 

} 

はさておき、私はrefreshSession()を使用して試したが、それは入手トークンは、()()refreshSessionの関数ではないことを私に伝えます。

cognitoUser.refreshSession(reToken, (err, authResult) => { 
     if (err) throw err; 
     console.log(authResult) 
    }); 

答えて

2

私は答えを見つけました。

実際、無効なリフレッシュトークンではありませんでした。少なくともオブジェクト自体の意味で。

あなたはデバイストラッキングがを有効にしている場合、あなたは(私はやっていませんでした)AuthParametersでキーユーザーデバイスを渡す必要があります。

私はデバイストラッキングの説明をfound hereと読んでいましたが、私のユースケースには当てはまりそうでなかったので、単にそれをオフにしました(ユーザープール>デバイス)。

上記のコードはそれ以降に有効です。

関連する問題