EnvelopeApi.CreateEnvelope() (docusign) 抛出 USER_AUTHENTICATION_FAILED 异常
EnvelopeApi.CreateEnvelope() (docusign) throws an USER_AUTHENTICATION_FAILED exception
我正在使用 docusign C# 客户端 (https://github.com/docusign/docusign-csharp-client)。
- 相同的代码在暂存 (demo.docusign.net) 环境中工作,但在生产 (www.docusign.net) 环境中失败。
- 相同的用户凭据适用于较旧的 docusign sdk(DocuSign.Integration.Client.dll、v1.7.2),但不适用于最新的 docusign sdk(DocuSign.eSign.dll、v2.0.1)
这是我的代码:
var accountId = LoginAndGetAccountId();
var envelopeDefinition = new EnvelopeDefinition
{
EmailSubject = "Please sign this agreement.",
Status = "sent"
};
...
...
var envelopesApi = new EnvelopesApi();
var envelopeSummary = envelopesApi.CreateEnvelope(accountId, envelopeDefinition);
我可以通过 API 登录,并获得一个有效的帐户 ID。当我进行 "envelopesApi.CreateEnvelope()" 调用时,代码会在生产环境中爆炸。
An unhandled exception of type 'DocuSign.eSign.Client.ApiException' occurred in DocuSign.eSign.dll
Additional information: Error calling CreateEnvelope: {
"errorCode": "USER_AUTHENTICATION_FAILED",
"message": "One or both of Username and Password are invalid."
}
如何进一步调试?
Login() API 调用用于根据 API 进行身份验证并检索您的 baseUrl
和 accountId
。您会注意到返回的 baseUrl
包含您的 user/account 所在的正确服务器。
当您对生产进行登录调用时,会带回什么值?由于您收到用户身份验证错误,我认为该值不是 www
而是 eu1
或 na2
我猜。您能否确认正在返回哪个域以及您是否正在对正确的服务器进行生产调用?
注意:所有这些信息都包含在 POST API 认证指南中:https://www.docusign.com/sites/default/files/API_Certification_Post_04_08_16.pdf
对于任何为此苦苦挣扎的人来说,答案很简单。
当基数 URL 指向 demo.docusign.net/restapi.
时,我的程序运行良好
我已获准使用 API,我的生产环境已设置有付费处方和用户。然后我更新了我的代码以使用新的用户和密码。
在文档中,有一条注释指出,当您准备好切换到生产环境时,将代码中的基数 URL 更改为 www.docusign。com/restapi。所以我也做了那个改变。
然后我会得到OP提到的错误。如果我将其切换回 URL 进行开发,则没有问题。
要解决此问题 - 不要使用 www。 使用 na2、eu1 或 eu。 就这么简单。
要找出使用哪一个,请转到您在 Docusign 门户中的帐户并启用日志记录。下载日志,在日志文件的顶部应该有对 na2、eu1 或 eu 的引用。
像这样:
PUT https://na2.docusign.net:....
我正在使用 docusign C# 客户端 (https://github.com/docusign/docusign-csharp-client)。
- 相同的代码在暂存 (demo.docusign.net) 环境中工作,但在生产 (www.docusign.net) 环境中失败。
- 相同的用户凭据适用于较旧的 docusign sdk(DocuSign.Integration.Client.dll、v1.7.2),但不适用于最新的 docusign sdk(DocuSign.eSign.dll、v2.0.1)
这是我的代码:
var accountId = LoginAndGetAccountId();
var envelopeDefinition = new EnvelopeDefinition
{
EmailSubject = "Please sign this agreement.",
Status = "sent"
};
...
...
var envelopesApi = new EnvelopesApi();
var envelopeSummary = envelopesApi.CreateEnvelope(accountId, envelopeDefinition);
我可以通过 API 登录,并获得一个有效的帐户 ID。当我进行 "envelopesApi.CreateEnvelope()" 调用时,代码会在生产环境中爆炸。
An unhandled exception of type 'DocuSign.eSign.Client.ApiException' occurred in DocuSign.eSign.dll
Additional information: Error calling CreateEnvelope: {
"errorCode": "USER_AUTHENTICATION_FAILED",
"message": "One or both of Username and Password are invalid."
}
如何进一步调试?
Login() API 调用用于根据 API 进行身份验证并检索您的 baseUrl
和 accountId
。您会注意到返回的 baseUrl
包含您的 user/account 所在的正确服务器。
当您对生产进行登录调用时,会带回什么值?由于您收到用户身份验证错误,我认为该值不是 www
而是 eu1
或 na2
我猜。您能否确认正在返回哪个域以及您是否正在对正确的服务器进行生产调用?
注意:所有这些信息都包含在 POST API 认证指南中:https://www.docusign.com/sites/default/files/API_Certification_Post_04_08_16.pdf
对于任何为此苦苦挣扎的人来说,答案很简单。
当基数 URL 指向 demo.docusign.net/restapi.
时,我的程序运行良好我已获准使用 API,我的生产环境已设置有付费处方和用户。然后我更新了我的代码以使用新的用户和密码。
在文档中,有一条注释指出,当您准备好切换到生产环境时,将代码中的基数 URL 更改为 www.docusign。com/restapi。所以我也做了那个改变。
然后我会得到OP提到的错误。如果我将其切换回 URL 进行开发,则没有问题。
要解决此问题 - 不要使用 www。 使用 na2、eu1 或 eu。 就这么简单。
要找出使用哪一个,请转到您在 Docusign 门户中的帐户并启用日志记录。下载日志,在日志文件的顶部应该有对 na2、eu1 或 eu 的引用。
像这样:
PUT https://na2.docusign.net:....