401开发人员沙箱中对access_token的未授权响应

时间:2017-11-07 20:03:25

标签: docusignapi

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

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

我按照Using the Authorization Code Grant

的步骤进行操作

我没问题:

  1. Starting the Authentication Code Grant
  2. Handling the Response
  3. Exchanging the Code for a Token
  4. Getting the User’s Account and Base URI Information
  5. 我收到userinfo后,只有一个帐户,因此我使用该帐户 base_uri 进行所有后续的api调用 {base_uri} + "/restapi/v2/accounts/" + {account_id}

    在我随后的api调用中,我还添加了标题

    Authorization: Bearer eyJ0eX...MrhIddzBAQ

    我正在使用 access_token 我已经步入交换令牌代码

    使用 access_token base_uri account_id 进行create envelope api call或任何其他api通话时,我会收到 POST https://demo.docusign.net/restapi/v2/accounts/<account_id>/envelopes导致了401 Unauthorized回复

    我尝试了什么

    使用docusign API资源管理器中的 access_token 进行测试: 我去了API EXPLORER - create envelope 我使用使用沙盒帐户进行身份验证来验证我之前调用docusign时所获得的 access_token 。与 account_id 相同。

    当我点击发送请求时,我再次获得 401 Unauthorized 响应。

    当我使用使用沙盒帐户进行身份验证时,但这次我点击获取OAuth2令牌(生成新令牌),然后点击发送请求,我收到了成功的消息。

    然后我将此 access_token (从请求)复制到我的网站中以测试api调用,这次它有效。它也适用于我为docusign做的所有其他api调用。

    • 因此,使用替换令牌代码之后的 access_token ,我得到 401 Unauthorized 来进行api通话
    • 当我使用 API资源管理器中生成的 access_token 时,所有api调用docusign都在我的网站上工作。

    我还尝试了什么

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

    • Xdebug,一步一步确保在api调用之前设置所有参数/标题。他们是,他们和api explorer一样。

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

    我很遗憾下次要做什么,如何解决这个问题,我确信这很简单,但我似乎无法找到问题。

    更新

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

1 个答案:

答案 0 :(得分:2)

点击API资源管理器中的获取OAuth2令牌后,您将完成授权代码授权流程,包括新令牌。

由于此方法有效,但您的应用通过OAuth授权码流程获得的令牌无效,这告诉我您的应用存在问题。

检查:

  1. 从DocuSign退出。从您的应用登录。您是否转到DocuSign正确登录?然后重定向到您的应用程序?

  2. 您是否要求&#34; 签名&#34;您的请求中的范围?检查范围名称的拼写和大小写!

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

  4. 当您将授权码转换为承载令牌时,您是否存储了完整的承载令牌?这很长。

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

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

  7. 如果以上内容没有帮助,请更新您的问题(您可以自行编辑问题),并附上您的请求。