401 开发者沙箱中access_token未经授权的响应

lju*_*adr 5 docusignapi

我正在使用开发人员沙箱进行所有 api 调用。\n它的网站使用 laravel 5.2 构建\n所有 api 调用均使用guzzle/guzzle进行的。

\n\n

我正在尝试使用 docusign api 自动发送 pdf 合同(创建信封)。

\n\n

我按照步骤使用授权代码授予中的步骤进行操作

\n\n

我没有遇到任何问题:

\n\n
    \n
  1. 开始授予验证码
  2. \n
  3. 处理响应
  4. \n
  5. 用代码交换令牌
  6. \n
  7. 获取 User\xe2\x80\x99s 帐户和基本 URI 信息
  8. \n
\n\n

获取userinfo后,只有一个帐户,因此我使用该帐户base_uri进行所有后续 api 调用\n{base_uri} + "/restapi/v2/accounts/" + {account_id}

\n\n

在我随后的所有 api 调用中,我还添加了标头

\n\n

Authorization: Bearer eyJ0eX...MrhIddzBAQ

\n\n

我正在使用在步骤“将代码交换为令牌”中获得的access_token

\n\n

当使用access_tokenbase_uriaccount_id执行创建信封 api 调用或任何其他 api 调用时,我得到\ n结果POST https://demo.docusign.net/restapi/v2/accounts/<account_id>/envelopes401 Unauthorized

\n\n

我尝试过的

\n\n

在 docusign API 资源管理器中使用access_token进行测试:\n我转到API EXPLORER - 创建信封\n我使用“使用沙盒帐户进行身份验证”来使用我在之前调用 docusign 时获得的access_token进行身份验证。account_id也是如此。

\n\n

当我点击SEND REQUEST时,我再次收到401 Unauthorized响应。

\n\n

当我使用Authenticate using Sandbox Account,但这次我单击Get OAuth2 token(生成新令牌),然后单击SEND REQUEST时,我收到成功消息。

\n\n

然后我将这个access_token(来自Request)复制到我的网站中以测试 api 调用,这次它起作用了。它也适用于我为记录签名而进行的所有其他 api 调用。

\n\n
    \n
  • 因此,使用我在Exchange the Code for a Token之后获得的access_token,我得到401 Unauthorized for api call
  • \n
  • 当我使用在API explorer中生成的access_token时,对 docusign 的所有 api 调用都在我的网站中工作。
  • \n
\n\n

我也尝试过

\n\n
    \n
  • 使用refresh_token获取新的access_token。仍然401

  • \n
  • Xdebug,一步一步确保在 api 调用之前设置所有参数/标头。它们是,并且它们与 api explorer 相同。

  • \n
  • Guzzle 选项可以获取有关请求的更多信息,并与API EXPLORERdebug => true中发送的内容进行比较,它们基本上是相同的,除了令牌之外。
  • \n
  • 邮递员向 api 发出请求(只是为了消除代码中出现错误的任何可能性),具有相同的行为:\n\n
      \n
    • 401 带有我从 docusign 获得的令牌
    • \n
    • 使用API EXPLORER生成的令牌成功
    • \n
  • \n
\n\n

我有点不知道下一步该做什么以及如何解决这个问题,我确信这很简单,但我似乎无法找到问题所在。

\n\n

更新

\n\n

我使用了 Larry K\'s 答案,发现我的问题在于 /oauth/auth 调用中的范围值。我把它改为scope=signature%20extended,一切正常!

\n

Lar*_*y K 4

当您在 API 资源管理器中单击“获取 OAuth2 令牌”时,您将经历完整的授权代码授予流程,包括新令牌。

由于此方法有效,但您的应用程序通过 OAuth 授权代码流程获取的令牌不起作用,这告诉我您的应用程序有问题。

查看:

  1. 从 DocuSign 注销。从您的应用程序登录。您是否已转移到 DocuSign 以正确登录?然后重定向到您的应用程序?

  2. 您是否在请求中请求“签名”范围?检查范围名称的拼写和大小写!

  3. 当您重定向到您的应用程序时,您的应用程序会收到授权代码作为查询参数。你明白了吗?

  4. 当您将授权代码转换为不记名令牌时,您是否存储完整的不记名令牌?它很长。

  5. 当您发送 Envelopes::create 请求时,您是否在单词 Bearer 和令牌本身之间包含空格?

  6. demo.docusign.net您是否正在对(不是 .com)进行 API 调用

如果上述方法没有帮助,请更新您的问题(您可以编辑您的问题本身)并跟踪您的请求。

  • 这是“/oauth/auth”调用中范围值的问题,在测试刷新令牌时,我一度从**签名**更改为**扩展**...并跳过了阅读“允许权限页面”。 .我将其更改为**scope=signature%20extended**,并且一切正常!非常感谢您,我希望我能多次接受您的回答:) (2认同)