You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Cognito RefreshToken报错“Invalid Refresh Token”排查求助

解决Cognito REFRESH_TOKEN_AUTH 提示"Invalid Refresh Token"的问题

排查方向1:修正API参数

initiateAuth接口在REFRESH_TOKEN_AUTH流程下不需要传递UserPoolId,多余的参数会触发错误校验逻辑。Cognito通过ClientId和RefreshToken即可关联到对应用户池,移除该参数后重试:

$result = $client->initiateAuth([
    'AuthFlow' => 'REFRESH_TOKEN_AUTH',            
    'ClientId' => $clientID,
    'AuthParameters' => [
        'REFRESH_TOKEN' => $refreshToken,                
        'SECRET_HASH' => $secret_hash,                
    ],
]);

排查方向2:验证Secret Hash生成逻辑

若App Client开启了Generate client secret,Secret Hash必须严格遵循HMAC-SHA256(客户端密钥, 用户名 + 客户端ID)规则生成:

  • 确认生成时使用的用户名是当前RefreshToken关联用户的用户名(大小写敏感)
  • 客户端密钥需用App Client的Secret值,而非ClientId
  • 参考正确生成代码:
$secret_hash = hash_hmac('sha256', $username . $clientID, $clientSecret, true);
$secret_hash = base64_encode($secret_hash);

排查方向3:检查Refresh Token状态

  • 确认该Refresh Token未被撤销过:已撤销的Token调用revokeToken仍会返回成功,但无法用于刷新
  • 查看用户池的Refresh Token有效期配置,若超过有效期则会失效
  • 确认用户未修改过密码:密码修改后,旧Refresh Token会被系统自动失效

排查方向4:检查SDK与环境配置

  • 升级AWS PHP SDK到最新稳定版,避免旧版本的参数兼容问题
  • 确保客户端初始化时的Region配置与用户池所在Region完全一致

长期保持登录的优化方案

  • 在Cognito控制台的App Client设置中,将Refresh Token有效期设为最大值(3650天),降低用户重新登录频率
  • 实现自动刷新逻辑:在AccessToken过期前(如提前5分钟)调用刷新接口,更新前端存储的令牌信息
  • 增加降级处理:若Refresh Token失效,引导用户进行静默登录(若支持)或重新登录

内容的提问来源于stack exchange,提问作者Dipak PHP

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.20 14:12:05