我正在使用开发人员沙箱来进行所有api调用。 这是用laravel 5.2构建的网站 所有api调用均使用guzzle/guzzle。
我正在尝试使用docusign api自动发送pdf合约(创建信封)。
我按照Using the Authorization Code Grant
的步骤进行操作我没问题:
我收到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调用。
我还尝试了什么
使用 refresh_token 获取新的 access_token 。仍 401
Xdebug,一步一步确保在api调用之前设置所有参数/标题。他们是,他们和api explorer一样。
debug => true
以获取有关请求的更多信息,并与 API EXPLORER 中发送的内容进行比较,除了代币外,它们基本相同。我很遗憾下次要做什么,如何解决这个问题,我确信这很简单,但我似乎无法找到问题。
我使用了Larry K的答案,发现我的问题在于/ oauth / auth调用中的范围值。我将其更改为scope=signature%20extended
,一切正常!
答案 0 :(得分:2)
点击API资源管理器中的获取OAuth2令牌后,您将完成授权代码授权流程,包括新令牌。
由于此方法有效,但您的应用通过OAuth授权码流程获得的令牌无效,这告诉我您的应用存在问题。
检查:
从DocuSign退出。从您的应用登录。您是否转到DocuSign正确登录?然后重定向到您的应用程序?
您是否要求&#34; 签名&#34;您的请求中的范围?检查范围名称的拼写和大小写!
当您重定向到您的应用时,您的应用会收到授权码作为查询参数。你明白了吗?
当您将授权码转换为承载令牌时,您是否存储了完整的承载令牌?这很长。
当您发送Envelopes :: create请求时,您是否在单词Bearer和令牌本身之间包含空格?
您是否正在对demo.docusign.net
(而不是.com)进行API调用
如果以上内容没有帮助,请更新您的问题(您可以自行编辑问题),并附上您的请求。