gpt4 book ai didi

javascript - AWS Cognito - 无效的刷新 token

转载 作者:数据小太阳 更新时间:2023-10-29 04:28:17 25 4
gpt4 key购买 nike

我正在使用 Amazon Cognito服务 amazon-cognito-identity-js库,并且在刷新用户的 token (即 id token )时遇到问题。

尝试通过创建未经身份验证的 initiateAuth 来刷新用户 token 时请求,我收到 400 http 状态响应,以及“无效刷新 token ”错误消息。

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

Uncaught Error: Invalid Refresh Token.

为什么它认为我传递的刷新 token 无效?

// the refresh token
var reToken;

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

// connect to user pool and
// find the current user
var CognitoUserPool = AmazonCognitoIdentity.CognitoUserPool;
var userPool = new AWSCognito.CognitoIdentityServiceProvider.CognitoUserPool(poolData);
var cognitoUser = userPool.getCurrentUser();

// if we found a user
if (cognitoUser != null)
{
// get active user session
cognitoUser.getSession(function(err, session)
{
// catch errors
if (err) {
alert(err);
return;
}

// get the refresh token
reToken = session.refreshToken.token;
});
}

// get current epoch time
var curDate = new Date();
var currentEpoch = Math.round(curDate.getTime() / 1000);

// get the epoch when the token
// was last issued
var issuedEpoch = store.get('issued');

// set the refresh parameters
var refreshParams = {
ClientId: 'XXXXXXXXXXXXXXXXXXXXXXXXXX',
AuthFlow: 'REFRESH_TOKEN_AUTH',
AuthParameters: { 'REFRESH_TOKEN': reToken }
};

// note: 30 minutes = 1800 seconds
// if a token was last issued over 30 minutes ago
if ( (currentEpoch - issuedEpoch) >= 1800 )
{
// refresh the users token with a new token
userPool.client.makeUnauthenticatedRequest('initiateAuth', refreshParams, (err, newToken) => {
// catch errors
if (err) {
alert(err);
return;
}

// do stuff with the returned token
console.log(newToken)
})

}

顺便说一句,我试过使用 refreshSession(),但它告诉我 getToken() 不是 refreshSession() 的函数。

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

最佳答案

我找到了答案。

事实证明,它并不是真正无效的刷新 token ;至少在对象本身的意义上。

如果您启用了设备跟踪,那么您必须在AuthParameters 中传递用户设备 key (我没有这样做) .

我通读了设备跟踪的描述,如found here ,它似乎不适用于我的用例,所以我只是将其关闭(用户池 > 设备)。

上面的代码在那之后起作用了。

关于javascript - AWS Cognito - 无效的刷新 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46879876/

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