oauth - 最后一个过期令牌时如何请求新的刷新令牌?
问题描述
我有两个用于 docusign 的帐户,live 和 demo。演示版已经有一段时间没有使用了,实际上最后一次创建刷新令牌是在 11 月 14 日。因此,我假设它已经过期,并且可能会阻止我购买新的。
当我提出请求时,我收到 invalid_grant 错误。相同的代码(带有测试凭据)适用于我的真实帐户,该帐户每隔几天左右请求一个实时令牌。在长时间不使用之前,它在测试凭证上也能正常工作。
我假设我需要获取一个新的刷新令牌,但没有有效的先前令牌,我不知道该怎么做。
解决方案
以下适用于 DocuSign 的 OAuth2 认证服务:
当您使用刷新令牌获取新的访问令牌时,您还会获得一个新的刷新令牌。但请参阅以下内容:
如果您的原始 OAuth 请求仅包含signature
范围,则新刷新令牌的到期日期将与原始刷新令牌相同(30 天)。
但是,如果您同时请求signature
和extended
范围,那么您的新刷新令牌将在您刷新它的 30 天后过期。
因此,无需用户再次进行身份验证即可继续获取新访问令牌的方式是:
- 用户使用
signature
和extended
范围进行身份验证。您的应用程序将身份验证代码交换为访问令牌(有效期为 8 小时)和刷新令牌(有效期为 30 天)。 - 在 30 天内,刷新访问令牌。这也为您提供了一个新的刷新令牌,适用于新的 30 天期限。
- 冲洗并重复。只要您至少每 30 天获得一个新的刷新令牌,您就可以永远继续下去。
警告:出于信息安全的原因,最终用户、他们的管理员和/或 DocuSign 可能会使所有现有的刷新令牌无效。这是一个不寻常的极端情况,但可能会发生。测试极端情况的最简单方法:删除用户对应用程序的同意。
推荐阅读
- javascript - 在 JavaScript 中导出内部函数?
- python - 为什么 scipy 'cKDTree' 在查找最近点时比 'cdist' 慢?
- spring - 为什么这个最大文件大小配置不起作用?
- sql - 使用 Case 语句转换查询
- c++ - 为什么函数中用作返回值的类实例在函数返回时不调用其析构函数?
- maven - 使用本地依赖和远程
- ios - 使用 AVAudioPlayerNode 播放片段时,我可以注册两个不同的回调,调度完成和播放完成吗?
- c# - 如何读取CSV并将其一一放入DataGrid视图C#
- php - 如何从我的第一页复制这个隐藏的值并在我的第二页发布?
- android - setAudioRoute (int routes) 有哪些不同的 (int routes) 值?