【问题标题】:Access token expires访问令牌过期
【发布时间】:2019-06-22 06:31:18
【问题描述】:

我使用的是 RingCentral Client v. 2.3.4。

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

有什么方法可以让我们在无需用户干预的情况下保持此令牌有效。

【问题讨论】:

    标签: c# oauth-2.0 ringcentral


    【解决方案1】:

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

    可能是你的情况吗?您是否在多个应用程序中使用相同的 RingCentral 用户凭据?是这样,很有可能您拥有超过 5 个活动令牌,并且存储在您的数据库中的最旧的令牌已失效。

    更新:

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

    【讨论】:

      【解决方案2】:

      您需要知道如何有效地使用令牌并以不需要频繁调用和生成它们的方式生成访问令牌,但仅在到期前需要时才需要。

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

      您可以每 1 小时更新一次访问令牌和刷新令牌。 expires_at 时间提供让您知道何时需要刷新令牌,并定期检查它将允许您在需要时刷新它。您无需在每次 API 调用之前过于频繁地调用它。

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

      如果您可以长期维护访问令牌和刷新令牌周期。通过这种方式,您可以在大多数情况下避免令牌过期,即使您保存并从数据库中检索它,周期也不会中断

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2013-04-04
        • 2016-09-17
        • 1970-01-01
        相关资源
        最近更新 更多