访问令牌过期

时间:2018-09-20 07:49:01

标签: c# oauth-2.0 ringcentral

我已经使用了RingCentral Client v。2.3.4。

我已经实现了OAuth授权以获取访问令牌,然后将其存储在数据库中。我们还将自动刷新令牌属性设置为true。我们处理了刷新令牌事件,并更新了数据库中的访问令牌。我们使用数据库中的此令牌创建详细的电话事件,直到此处一切正常,但过了一段时间后,令牌可能过期了。

有什么办法可以使此令牌有效,而无需用户干预。

2 个答案:

答案 0 :(得分:2)

每个RingCentral用户最多可以拥有5个实时访问/刷新令牌。假设您使用相同的用户凭据在短时间内请求6次访问/刷新令牌。然后,您请求的第一个访问/刷新令牌将失效。

可能是您的情况吗?您是否在多个应用程序中使用相同的RingCentral用户凭据?是的,您很有可能拥有5个以上的实时令牌,并且存储在数据库中的最旧令牌无效。

更新

您还可以禁用自动刷新功能:https://github.com/ringcentral/ringcentral-csharp-client#auto-refresh,并在访问令牌到期时(在刷新令牌也到期之前)手动进行刷新。这样,您无需侦听刷新事件,因为所有刷新操作均由您的代码启动。只记得每次刷新后都要更新数据库。

答案 1 :(得分:0)

您需要知道有效地使用令牌和生成访问令牌的方式,而不必经常调用和生成它们,而仅在到期之前需要的情况下。

访问令牌生存期为3600s = 1小时 刷新令牌有效期为7天(1周)

您可以每1小时更新访问令牌和刷新令牌。使用expires_at time可以让您知道何时需要刷新令牌,并定期检查它可以让您在需要时刷新令牌。您无需在每次调用API之前都太频繁地调用它。

您可以刷新未到期的令牌,并且可以使用刷新令牌在到期之前进行刷新。先前的访问令牌将立即清除,并返回一个新的访问令牌。每个实例一次只能有一个活动访问令牌。

如果您可以维护访问令牌并为令牌的长期运行刷新令牌循环..这样,即使在循环不中断的情况下,即使您保存并从数据库中检索令牌,在大多数情况下也可以避免令牌过期

更多参考:https://forums.developers.ringcentral.com/articles/1426/generating-access-token-and-refresh-token-and-effi.html