gpt4 book ai didi

javascript - 如何恢复过期的 token [AWS Cognito]?

转载 作者:可可西里 更新时间:2023-11-01 02:39:12 24 4
gpt4 key购买 nike

我正在为我的网站使用 AWS。 1 小时后, token 过期,用户几乎无法执行任何操作。

现在我正在尝试像这样刷新凭据:

 function getTokens(session) {
return {
accessToken: session.getAccessToken().getJwtToken(),
idToken: session.getIdToken().getJwtToken(),
refreshToken: session.getRefreshToken().getToken()
};
};


function getCognitoIdentityCredentials(tokens) {
const loginInfo = {};
loginInfo[`cognito-idp.eu-central-1.amazonaws.com/eu-central-1_XXX`] = tokens.idToken;
const params = {
IdentityPoolId: AWSConfiguration.IdPoolId
Logins: loginInfo
};
return new AWS.CognitoIdentityCredentials(params);
};


if(AWS.config.credentials.needsRefresh()) {
clearInterval(messwerte_updaten);
cognitoUser.refreshSession(cognitoUser.signInUserSession.refreshToken, (err, session) => {
if (err) {
console.log(err);
}
else {
var tokens = getTokens(session);

AWS.config.credentials = getCognitoIdentityCredentials(tokens);

AWS.config.credentials.get(function (err) {
if (err) {
console.log(err);
}
else {
callLambda();
}
});
}
});
}

问题是,1 小时后,登录 token 刷新没有问题,但 2 小时后我无法再刷新登录 token 。

我还尝试使用 AWS.config.credentials.get()AWS.config.credentials.getCredentials()AWS.config.credentials。刷新()这也不起作用。

我收到的错误信息是:

Missing credentials in config

Invalid login token. Token expired: 1446742058 >= 1446727732

最佳答案

在将近 2 周后,我终于解决了它。

您需要刷新 token 才能接收新的 ID token 。获取刷新 token 后,使用新的 ID token 更新 AWS.config.credentials 对象。

这里有一个关于如何设置它的例子,运行顺利!

refresh_token = session.getRefreshToken();   // you'll get session from calling cognitoUser.getSession()

if (AWS.config.credentials.needsRefresh()) {

cognitoUser.refreshSession(refresh_token, (err, session) => {
if(err) {
console.log(err);
}
else {
AWS.config.credentials.params.Logins['cognito-idp.<YOUR-REGION>.amazonaws.com/<YOUR_USER_POOL_ID>'] = session.getIdToken().getJwtToken();
AWS.config.credentials.refresh((err)=> {
if(err) {
console.log(err);
}
else{
console.log("TOKEN SUCCESSFULLY UPDATED");
}
});
}
});
}

关于javascript - 如何恢复过期的 token [AWS Cognito]?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48887594/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com