【发布时间】:2021-07-10 03:39:32
【问题描述】:
我正在尝试使用适用于 javascript 的 AWS 开发工具包刷新 AWS Cognito ID 令牌。我们需要自动刷新令牌 ID,而不需要我们的用户进行任何操作。我创建了以下函数,我们将检查认证后获取的过期时间,当当前时间接近过期时间时,我们将调用此函数。
refreshToken(success, failure) {
var poolData = {
UserPoolId: this.initializeData.UserPoolId,
ClientId: this.initializeData.ClientId,
};
var userPool = new AmazonCognitoIdentity.CognitoUserPool(poolData);
var cognitoUser = userPool.getCurrentUser();
cognitoUser.getSession(function (err, session) {
if (err) {
alert(err.message || JSON.stringify(err));
return;
}
AWS.config.region = 'us-east-2';
AWS.config.credentials = new AWS.CognitoIdentityCredentials({
IdentityPoolId: 'myIdentityPoolId',
Logins: {
'cognito-idp.us-east-2.amazonaws.com/myPoolId': session.getIdToken().getJwtToken(),
},
});
AWS.config.credentials.refresh(error => {
if (error) {
console.error(error);
} else {
var refresh_token = session.getRefreshToken();
console.log('refresh started.');
cognitoUser.refreshSession(refresh_token, (err, session) => {
if (err) {
console.log(err);
} else {
AWS.config.credentials.params.Logins[
'cognito-idp.us-east-2.amazonaws.com/myPoolId'
] = session.getIdToken().getJwtToken();
AWS.config.Credentials.refresh(err => {
if (err) {
console.log(err);
} else {
console.log('TOKEN SUCCESSFULLY UPDATED');
console.log(cognitoUser.getSession().getJWTToken);
}
});
}
});
}
});
});
}
但我在控制台中收到以下错误。
TypeError: AWS.config.Credentials is undefined
在以下行: AWS.config.Credentials.refresh(err => {
我应该怎么做才能解决这个问题?
【问题讨论】:
标签: javascript amazon-web-services amazon-cognito aws-sdk-js