考虑到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>
是否可以在不重新加载整个应用的情况下获取刷新的令牌?
答案 0 :(得分:3)
令牌的默认TTL为30分钟,只需使用/api/Main/Ping
之类的简单方法轮询API即可保持令牌/会话处于活动状态
答案 1 :(得分:0)
我从Linnworks收到以下答复,该问题已解决:
经过进一步调查,这似乎是由于对AuthorizeByApplication调用执行了ping操作。为帮助减少返回401未经授权的“令牌已过期。请重新验证用户”的风险,建议在打开应用程序时,调用AuthorizeByApplication并保存响应。
创建会话后,应该不必再次调用AuthorizeByApplication。在此会话中返回的令牌的TTL为30分钟。如果在以后的呼叫中使用此令牌,则令牌的TTL将重置为30分钟。因此,如您对Stackoverflow问题的回答所建议,短暂调用“ api / Main / Ping”将重置30分钟的TTL,而对您的应用程序性能影响很小。
要防止应用程序使用过期的令牌:
- 启动应用程序后,调用AuthorizeByApplication并保存会话响应。
- 要防止会话结束,请使用保存的会话令牌调用“ api / Main / Ping”以重置保存的会话的TTL。
- 对于应用程序进行的任何呼叫,请使用原始保存的会话令牌。