我们是否可以强制在一小时前过期并使用刷新令牌获取新的IdToken
要么
如何使用此amazon-cognito-identity-js-node模块中的refreshToken值在自动到期后获取新的IdToken?

我正进入(状态


  TypeError:refreshToken.getToken不是错误函数。


我正在使用此代码,如下所示:

cognitoUser.refreshSession(refreshToken, (err, session) => {
                          if (err) {//throw err;
                            console.log('In the err'+err);
                          }
                          else{
                            console.log('session '+session);
                          }
                    });


我在函数中传递了refreshToken正确值。
在文件CognitoUser.js上的函数

refreshSession(refreshToken, callback)
{
  const authParameters = {};
  authParameters.REFRESH_TOKEN = refreshToken.getToken(); /* Here I am getting error*/
  ...
  ....
}


如果我将功能refreshSession()的第二行替换为

authParameters.REFRESH_TOKEN = this.signInUserSession.getRefreshToken().getToken();


然后错误消失了。

我尝试使用如下代码:

 var poolData = {
        UserPoolId: 'xx-xxx-x_xxxxx',
        ClientId: 'xxxxx',
        AuthFlow: 'xxxxx'
     };

     userPool = new AWS.CognitoIdentityServiceProvider.CognitoUserPool(poolData);


if(minuteDiff >= 60) { // Defult Id Token Expired
    // Get New IdToken using RefreshToken
    var userData = {
        Username : cognitousername,
        Pool : userPool
    };
    var cognitoUser  = new AWS.CognitoIdentityServiceProvider.CognitoUser(userData);

    var refreshToken = localStorage.getItem('refreshToken');

    cognitoUser.getSession(function(err, session) {
        if (err) {
            res.send(err);
        }
        else{
                /* Session Refresh */
                cognitoUser.refreshSession(refreshToken, (err, session) => {

                    if (err) {//throw err;
                        console.log('In the err'+err);
                    }
                    else{
                        var regsmar_apiKey = session.idToken.jwtToken; // will this provide new IdToken?
                        localStorage.setItem('api_key',regsmar_apiKey);
                    }
                });
        }
    });
}


有人可以帮我吗,过期后如何更新IdToken?

最佳答案

我认为refreshSession需要一个CognitoRefreshToken类的实例,而不仅仅是一个普通的字符串。 getToken是该类中的方法,在您的情况下是缺少的。您可能要尝试以下操作:

var CognitoRefreshToken = require('amazon-cognito-identity-js').CognitoRefreshToken;
...
var token = new CognitoRefreshToken({ RefreshToken: refreshToken })
cognitoUser.refreshSession(token, (err, session) => { ... });


我在这里看到它:https://gist.github.com/kndt84/5be8e86a15468ed1c8fc3699429003ad

10-01 01:06