重新检查您的所有价值观。
我也收到了同样的 invalid_grant 响应,一开始我不知道为什么。事实证明,我在 Content-Type 标头中有错字。我使用的是 application/x-www-form-urlencode 而不是 application/x-www-form-urlencoded。
您可能不是,但如果您提交的正是您在问题中发布的授权标头(MjMwNTQ2YTctOWM1NS00MGFkLThmYmYtYWYyMDVkNTQ5NGFkOjMwODc1NTVlLTBhMWMtNGFhOC1iMzI2LTY4MmM3YmYyNzZlOQ==),它将失败并显示该消息。
这是their documentation 中提供的示例集成密钥和示例密钥的 base64 值。如果您使用online base64decoder 解码该字符串,它将导致 230546a7-9c55-40ad-8fbf-af205d5494ad:3087555e-0a1c-4aa8-b326-682c7bf276e9。这与 the documentation 中的 sample 集成密钥和秘密相同。
通过编码您的集成密钥和秘密(integrationKey:secret)检查您提交的授权标头使用这个online base64encoder。这将确保问题不在于您的集成密钥和机密的 base64 编码。获得该值后,请确保您的授权在您从本网站获得的值之前使用 Basic 一词。 (基本 base64stringFromOnlineEncoder)
检查您在帖子正文中提交的代码不是来自their documentation 的示例代码。 ey2dj3nd.AAAA39djasd3.dkn4449d21d 是来自their documentation 的示例代码。您可能只是在问题中使用它作为占位符,但如果您提交任何这些值,它将返回 invalid_grant。确保您的帖子正文没有任何前导或尾随空格。
- 设置正确的 Content-Type application/x-www-form-urlencoded
- 设置正确的授权标头基本 base64EncodedIntegrationKey:Secret
- 使用从对 /oauth/auth 的 GET 请求收到的有效代码具有正确的正文,没有前导或尾随空格,确保您没有使用问题中的值。
如果您仍然遇到问题并且您不是在做 user application,而是在做 service integration,您可以使用旧版身份验证来获取您的 oAuth2 令牌。
替代方法使用 Legacy Authentication 用于服务集成
此方法不使用授权代码。您将集成密钥、用户名和密码以 JSON 格式传入 X-DocuSign-Authentication 标头。
演示服务器:demo.docusign.net
生产服务器:www.docusign.net API
版本:v2
POST https://{server}/restapi/{apiVersion}/oauth2/token
Content-Type: application/x-www-form-urlencoded
X-DocuSign-Authentication: {"IntegratorKey":"your_integrator_key","Password":"docusign_account_password","Username":"docusign_account_username"}
grant_type=password&client_id=your_integrator_key&username=docusign_account_username&password=docusign_account_password&scope=api
如果您正在构建一个用户应用程序,该应用程序需要用户输入他们的文档签名凭据来生成令牌,那么这种替代方法将不适合您。