【问题标题】:Docusign API's failing after an hour一小时后Docusign API失败
【发布时间】:2019-07-15 15:39:51
【问题描述】:

我有一个文档签名沙盒帐户。我正在尝试将 docusign 与我的应用程序集成,并在 java 中使用 JWT Grant 进行身份验证。我从https://github.com/docusign/eg-01-java-jwt 获得了一个示例代码,它完美运行了一个小时,然后 API 开始失败。

知道如何解决这个问题吗?

我收到以下错误

我已经尝试将令牌到期时间从 1 小时更改为其他较小的值(5 分钟、30 分钟)。即便如此,API 也会在一小时后开始出现故障。

https://github.com/docusign/eg-01-java-jwt

错误信息

{"timestamp":1560750467288,"status":500,"error":"Internal Server Error","message":"Error while requesting server, received a non successful HTTP code 401 with response Body: '{\r\n  \"errorCode\": \"USER_AUTHENTICATION_FAILED\",\r\n  \"message\": \"One or both of Username and Password are invalid. Invalid access token\"\r\n}'","path":"{path}"}

【问题讨论】:

  • 请看我更新的答案

标签: docusignapi docusigncompositetmplts


【解决方案1】:

找到解决问题的方法。

正在生成访问令牌,但由于某种原因,它没有更新 ApiClient 对象中的令牌,并且仅使用旧令牌。 所以现在我只是在每次令牌过期时创建一个新的 ApiClient 对象,而不是用新令牌替换旧令牌。

【讨论】:

    【解决方案2】:

    jwt 授权返回一个仅在 1 小时内有效的访问令牌。之后,您需要再生成一个新令牌。

    在每次 API 调用之前调用示例的 checkToken 方法。它应该根据需要创建一个新的访问令牌。

    已添加

    您需要进行调试才能看到发生了什么。 checkToken 方法是否在 50 分钟后获取新的访问令牌(它应该使用 10 分钟的缓冲时间)。是否正在使用新的访问令牌?

    【讨论】:

    • 是的,我正在调用 checkToken 方法,我可以在日志中看到它也在生成一个新令牌。但一个小时后 API 仍然开始失败。
    • 是的,检查令牌方法正在获取新的访问令牌,但我看到 ApiClient.java 的 updateParamsForAuth 方法中的 auth 对象有两个 accessToken 值。第一次创建访问令牌时,两个 accessToken 具有相同的值。下次当 accessToken 过期并创建新令牌时,只有其中一个值更改。我相信它具有较旧的价值。此外,即使我更改了 TOKEN_EXPIRATION_IN_SECONDS 的值,令牌也只会在一小时后过期。
    • 听起来示例中可能存在错误,或者您如何将其合并到您的应用中。在任何时候,都应该只有一个访问令牌。 Re 1 小时到期——这就是 JWT Grant 的工作方式。您应该在大约 50 分钟后获得一个新令牌。当您发现特定的错误时,请向 Java 示例的存储库提交问题。
    猜你喜欢
    • 1970-01-01
    • 2022-08-10
    • 2012-01-27
    • 1970-01-01
    • 2014-05-18
    • 2022-06-15
    • 2021-12-01
    • 1970-01-01
    • 2022-08-23
    相关资源
    最近更新 更多