如何在Linnworks嵌入式应用程序中获取刷新的令牌?

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (62)

考虑到Linnworks提供的不存在的支持,我想我会尝试在这里发布我的问题。

我在Linnworks中创建了一个私有嵌入式应用程序,以电子表格格式显示订单。该应用程序使用Vue.js构建,并使用axios从Linnworks API中提取数据。一切都在应该在这里工作,除了我一次只返回100个订单以保持快速。

我添加了一个“加载更多订单”按钮,它在工作表的末尾追加了100个订单,但在一段时间不活动后,这会导致“401未经授权的错误”,因为令牌已过期。

因为它是一个嵌入式应用程序,所以当应用程序初始化时,Linnworks会将令牌存储在iframe的src中,因此当它过期时,它不会被系统刷新。

<iframe src="https://example.com/sheet.html?token=9b11e8ff-4791-aca5-b58d-f6da84e996a6"></iframe>

有没有办法获得刷新的令牌而无需重新加载整个应用程序?

提问于
用户回答回答于

令牌的默认TTL为30分钟,只需使用简单的方法轮询API,/api/Main/Ping以保持令牌/会话处于活动状态

用户回答回答于

我从Linnworks得到了以下响应,修复了问题:

经过进一步调查后,这似乎是由于AuthorizeByApplication调用的ping。为了帮助降低401 Unauthorized“令牌已过期的风险。请重新验证用户”,建议在打开应用程序时调用AuthorizeByApplication并保存响应。 创建会话后,不必再次调用AuthorizeByApplication 。在此会话中返回的令牌的TTL为30分钟。如果在进一步调用中使用此令牌,则令牌的TTL将重置为30分钟。因此,正如您在Stackoverflow问题的响应中所建议的那样,简单地调用“api / Main / Ping”将重置30分钟的TTL,而对您的应用程序性能几乎没有影响。 防止应用程序使用过期的标记:

  1. 启动应用程序后,调用AuthorizeByApplication并保存会话响应。
  2. 要保持会话结束,请使用保存的会话令牌调用“api / Main / Ping”以重置已保存会话的TTL。
  3. 对于应用程序发出的任何调用,请使用原始保存的会话令牌。

扫码关注云+社区

领取腾讯云代金券