如何恢复过期的令牌[AWS Cognito]?

2024-01-07

我的网站使用 AWS。 1 小时后,令牌就会过期,用户几乎无法执行任何操作。

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

 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 小时后,登录令牌刷新没有问题,但 2 小时后我无法再刷新登录令牌。

我也尝试过使用AWS.config.credentials.get(), AWS.config.credentials.getCredentials() and AWS.config.credentials.refresh()这也不起作用。

我收到的错误消息是:

配置中缺少凭据

登录令牌无效。令牌已过期:1446742058 >= 1446727732


差不多两周后我终于解决了。

您需要刷新令牌才能接收新的 ID 令牌。获取刷新令牌后,使用新的 Id 令牌更新 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");
        }
      });
    }
  });
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何恢复过期的令牌[AWS Cognito]? 的相关文章

  • 计算字符串中的唯一单词

    下面我尝试将字符串数组提供给一个函数 该函数将唯一单词添加到单词数组中 并且如果该单词已经在数组中 则增加计数数组中相应元素的计数 var words var counts calculate a b calculate a c funct
  • 使用 .add() 选择多个 jQuery 对象

    是否 add http api jquery com add 方法允许一次选择多个对象而不是一次添加一个 one add two add three add four on click function 以下变量的设置方式相同 因为每个变量
  • 使用把手显示来自 parse.com 的 json 响应

    我想将 json 响应传递给车把 我已经查看了解析文档和 stackoverflow 问题 但我似乎无法弄清楚这一点 这是回应 results address 755 W Yale createdAt 2013 02 09T01 12 15
  • 设置 location.hash 时防止默认行为

    当我这样做时 location hash test url 会更新 页面会定位到具有该 id 的元素 有没有办法阻止页面定位到该元素 Solution 您无法阻止这种行为 但您可以通过暂时隐藏目标来愚弄它 例如 像这样 与 jQuery 无
  • 有没有办法根据渲染的字符串创建 DOM 对象?

    有没有办法从整个字符串而不只是innerHTML 创建DOM 对象 我有一个完整呈现的 DOM 形式的字符串
  • 当标题中包含“&”时,电子邮件标题无法正确显示,如何在 JavaScript 中修复?

    我有一些代码以以下格式显示文章标题列表 简短描述和作者姓名 标题 作者姓名 描述 作者的姓名和描述与此处无关 因为它们始终显示正确 大多数标题也可以正确显示 以下是一些虚构的示例 关于银行业务您需要了解的最重要的一件事 作者姓名 正确显示
  • 使用S3上传但不允许公共访问

    我的想法是创建一个 S3 存储桶以允许用户上传二进制对象 下一步是确认上传 然后 API 将启动文件处理 为了使其更安全 客户端将首先请求上传位置 然后 API 会在 S3 上为此上传分配并预先创建一个一次性使用目录 并在该目录上设置访问策
  • 如何在 HTML 表格上使用分页?

    我正在尝试使用这个分页library http flaviusmatis github io simplePagination js 在我的 HTML 表格页面 特别是浅色主题 中 但不知何故 我无法理解如何在我的 HTML 页面中以这种方
  • 将字符串(是一个函数)转换回 Javascript 中的函数

    我在下面将此函数作为字符串 我如何将其转换回函数 我正在从 JQuery 事件中提取事件处理程序 我想将它们存储为字符串 然后将它们转换回来 因为它们将保存在 mySQL 中 function if GActiveClick return
  • 修剪日期格式 PrimeNG 日历 - 删除时间戳、角度反应形式

    我将以下内容推入我的反应形式 obj 中2016 01 01T00 00 00 000Z但我想要以下2016 01 01 有谁知道有一个内置函数可以实现上述目的 我已经搜索过文档here https www primefaces org p
  • 在 Chrome 中加载analytics.js时出现307重定向

    我正在构建一个网络应用程序并使用 Google Analytics analytics js 进行分析 我最近注意到 Chrome 中的分析功能无法正常工作 我使用单独模块中的标准代码片段加载分析并通过 requirejs 包含 我已验证该
  • 如何更改元素的 CSS 类并在单击时删除所有其他类

    我如何处理 AngularJS 2 中的一种情况 即单击一个元素需要更改其自己的样式 并且如果其他元素具有该样式 则需要将其删除 最好在一个函数中 如同Angular js 如何在单击时更改元素 css 类并删除所有其他元素 https s
  • 元素不适应 Firefox 上的

    使用 ES6 ish D3js 模块运行 Angular 6 应用程序会导致 Firefox 出现问题 Chromium Chrome Safari 和 IE Edge 工作正常 伪代码看起来类似于 生产代码可以在下面找到
  • Facebook API Javascript JSON 响应

    function getUser FB api me function response console log Response is response alert Your name is response first name ale
  • 什么是 TinyMCE jQuery 包?

    我被要求在项目中使用 TinyMCE 编辑器 在下载页面上 有一个主包 然后是一个 jQuery 包 This package contains special jQuery build of TinyMCE and a jQuery in
  • 在firefox上用js改变表单方法

    我需要使用 javascript jQuery 或纯 更改表单的方法属性 我的表单有 method post 我尝试用以下方法更改它 submit button click function var url input id url val
  • JavaScript 正则表达式两个标签之间的多行文本

    我编写了一个正则表达式来从 HTML 中获取字符串 但似乎多行标志不起作用 这是我的模式 我想将文本输入h1 tag var pattern div class box content 5 h1 lt lt h1 gt mi m html
  • 角度 4 单击按钮功能未触发

    我正在尝试检查文本输入是否为空或不在角度 4 中 我没有为此使用表单 这只是一个输入字段 当我在下面的按钮中执行 addLocaton 函数时 需要进行检查 我的输入字段
  • 我如何用 javascript/jquery 进行两指拖动?

    我正在尝试创建当有两个手指放在 div 上时拖动 div 的功能 我已将 div 绑定到 touchstart 和 touchmove 事件 我只是不确定如何编写这些函数 就像是if event originalEvent targetTo
  • Angular 2:使用正则表达式进行数字验证

    我正在尝试验证 IE 11 中的数字字段

随机推荐

  • ASP.NET MVC - 为什么我的视图不能从 System.Web.Mvc.ViewPage(of T) 正确继承

    应该可以在这里使用泛型并传递模型的类类型 然而 Visual Studio 2008 不接受这一点 我收到以下验证错误 在 VS 中加下划线 Context is not a member of ASP views home index a
  • Django 本身支持通用表表达式吗?

    为了澄清我的问题 我想知道是否可以在访问 CTE 功能时惯用地使用 Django ORM 我想我可以通过编写原始 SQL 语句来使用 CTE 但使用 ORM 语法糖 绕过手动编码 SQL 语句的能力是 Django 的最初吸引力之一 Dja
  • 反应原生 HTML 实体

    我正在从 WordPress 网站成功获取应用程序中的一些数据 一些实体 例如 本机反应不想进行类似的引号以及我遇到的更多问题 有没有办法在 React Native App 中制作 HTML 实体 提前致谢 你应该能够使用类似的东西htm
  • EmberJS 操作 - 当包装在“actions”中时从另一个操作调用一个操作

    当包裹在一个动作中时 如何从另一个动作中调用一个动作actions在 EmberJS 控制器中 使用现已弃用的方式定义操作的原始代码 app js App IndexController Ember ArrayController exte
  • PayPal API 定期付款

    我需要向我的网站添加定期付款 注册前 用户必须支付例如 1 个月 10 英镑的费用 此后每月支付 9 英镑 我尝试根据 PayPal 1 创建定期付款 但在 IPN 中 我没有收到 subscr signup 或其他响应 当我完成 doEx
  • Flash Builder 4 现在使用 AIR 2 吗?

    我刚刚获得了 CS5 主套件 其中包括 Flash Builder 4 和 Flash CS5 Pro 当我在 CS5 pro 中创建新的 AIR 应用程序时 它显示 AIR 2 但是当我在 Flash Builder 中创建新的 AIR
  • 字符串索引超出范围:n

    我每次执行这段代码时都会遇到一些问题 它会给我一个错误 字符串索引超出范围 n n 是编号 在与此代码相关的文本框中输入的字符数 即文本框 t2 它卡在第一个文本框 检查它是否不会转到数组中提到的下一个文本框 Object c1 t2 ge
  • Jquery 抛出 IE 特定错误

    看小提琴 http jsfiddle net JWSaZ http jsfiddle net JWSaZ 这在 Chrome FF 中工作正常 但在 Internet Explorer 中它会在 Jquery 文件中给出错误 Webpage
  • 使用 SymmetricDifference 比较两个文件夹中的不同文件

    var dir1Files dir1 GetFiles SearchOption AllDirectories var dir2Files dir2 GetFiles SearchOption AllDirectories var diff
  • 我可以用mpAndroidChart绘制渐变折线图吗?

    我可以画一个如图所示的折线图吗 如果可以的话 我应该怎么做才能改变线条颜色 谢谢你 我画的看起来像图二 线条颜色相同 并且没有昨天的incom 我应该怎么做才能将线条更改为渐变颜色并只显示最后一个markerView 我画的图 https
  • Android中的Pdf渲染器转换的​​图像是透明背景

    我是android开发的新手 我正在努力将 Pdf 转换为图像并将其存储在某个位置 我使用 PdfRenderer API 级别 21 将 PDF 转换为位图图像 转换后的图像是透明背景 请指导我将图像转换为白色背景 这样我就可以将其转换为
  • Swift - 发送 POST 请求时从 NSURLSession 返回数据

    我可以使用下面的代码在 Swift 中发送 POST 请求 func post gt String let request NSMutableURLRequest URL NSURL string http myserverip myfil
  • 使用 python 对点进行排序以获得连续曲线

    我有一个未排序点的列表 列表 50 6261 74 3683 63 2489 75 0038 76 0384 75 6219 79 8451 75 7855 30 9626 168 085 27 381 170 967 22 9191 17
  • PyCharm 中 Python 控制台和终端的区别

    我是 Python 初学者 我最近开始使用 PyCharm 但我不知道终端和控制台有什么区别 终端中的某些命令在控制台中不起作用 在讨论差异之前 我们需要先谈谈两者在实践中的区别 终端本质上取代了 Windows 上的命令提示符 电源外壳和
  • MinGW 错误:“线程”不是“std”的成员

    我正在尝试为 Windows 交叉编译一个简单的应用程序 include
  • 为什么gmtime要这样实现呢?

    我偶然发现了 Minix 的 gmtime 函数的源代码 我对从纪元以来的天数计算年份数的位感兴趣 以下是该部分的内容 http www raspberryginger com jbailey minix html gmtime 8c so
  • 通过 COM 将 DataTable 传递到 R

    我试图将数据从 SQL 传递到 C 然后传递到 R 服务器进行数据分析 然后返回到我的 Web 应用程序 但是 我使用的 COM 接口不允许在 C 和 R 之间传递复杂的数据类型 无数据表 我过去使用以下代码让它工作 int count d
  • NSTask 阻塞主线程

    我正在使用 NSTask 但是当我启动任务时 它会阻塞主线程 因此我无法更新它 直到任务结束 这是我的代码 NSString hostsforping google es pingdata NSTask alloc init pingdat
  • 使用 ListFragment 填充自定义视图列表

    我正在尝试使用片段在列表视图中显示元素 我创建了自定义视图 如下所示 list row xml 的图形表示 列表行 xml
  • 如何恢复过期的令牌[AWS Cognito]?

    我的网站使用 AWS 1 小时后 令牌就会过期 用户几乎无法执行任何操作 现在我正在尝试像这样刷新凭据 function getTokens session return accessToken session getAccessToken