【发布时间】:2017-10-21 19:20:22
【问题描述】:
我们是否可以在一小时前强制过期并使用刷新令牌获取新的 IdToken 要么 如何在此 amazon-cognito-identity-js-node 模块中使用 refreshToken 值在自动过期时间后获取新的 IdToken?
我得到了
TypeError: refreshToken.getToken is not a function as error.
我使用这个代码如下:
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?
【问题讨论】:
标签: javascript node.js aws-sdk amazon-cognito