文档https://docs.docusign.com/esign/guide/authentication/legacy_auth.html不起作用。我花了至少2个小时试图让这些说明工作。您的说明错误,或者他们的网站上有错误。
我在4天前开了个案,但他们没有回应。我正处于紧张状态以实现这一目标。有谁知道如何获得这个网址。
这是我的C#代码:
ApiClient apiClient = new ApiClient("https://www.docusign.net/restapi");
DocuSign.eSign.Client.Configuration.Default.ApiClient = apiClient;
DocuSignHeader myHeader = new DocuSignHeader()
{
Username = ConfigurationManager.AppSettings["DocuSignUsername"],
Password = ConfigurationManager.AppSettings["DocuSignPassword"],
IntegratorKey = ConfigurationManager.AppSettings["DocuSignIntegratorKey"],
};
DocuSign.eSign.Client.Configuration.Default.AddDefaultHeader("X-DocuSign-Authentication", JsonConvert.SerializeObject(myHeader));
AuthenticationApi authApi = new AuthenticationApi();
LoginInformation loginInfo = authApi.Login();
LoginAccount myAccount = loginInfo.LoginAccounts[0];
.. create envelope here..
EnvelopesApi envelopesApi = new EnvelopesApi(GetBasePath(myAccount.BaseUrl));
EnvelopeSummary envelopeSummary = envelopesApi.CreateEnvelope(myAccount.AccountId, envDef);
GetBasePath()的目的是在'restapi'之后剥离所有内容,因此网址是正确的。
答案 0 :(得分:0)
DocuSign实时制作系统有多个帐户子域,而演示系统只使用demo
。例如,在生产中,可能的网站是www
,na2
,na3
,eu
。
您的集成代码需要解析从您的身份验证请求返回的baseUrl
的子域,并使用该新子域重新配置apiClient
。
看起来您正在使用DocuSign SDK,自述文件中有一条说明解释了这一点:
<强>验证强>
使用传统标头身份验证的服务集成
(Legacy Header Authentication使用X-DocuSign-Authentication标头。)
使用身份验证:登录方法检索帐户的帐号和baseUrl。登录方法的URL是www.docusign.net用于生产,而demo.docusign.net用于开发人员沙箱。 baseUrl字段是loginAccount对象的一部分。请参阅docs和loginAccount对象
生产中所选帐户的baseUrl将以na1,na2,na3,eu1或其他内容开头。使用返回的baseUrl创建basePath(请参阅下一步。)将basePath用于所有后续API调用。
由login方法返回,baseUrl包含API版本和帐户ID。拆分字符串以获取basePath,只获取服务器名称和api名称。例如,您将收到https://na1.docusign.net/restapi/v2/accounts/123123123。你想要https://na1.docusign.net/restapi 使用basePath实例化SDK。例如ApiClient apiClient = new ApiClient(basePath);
使用Configuration.Default.AddDefaultHeader
设置示例中显示的身份验证标头参考:C# SDK
代码示例
以下是完全相同的C#代码(即剥离baseUrl的子域并重新配置apiClient):
// Update ApiClient with the new base url from login call
string[] separatingStrings = { "/v2" };
apiClient = new ApiClient(loginInfo.LoginAccounts[0].BaseUrl.Split(separatingStrings, StringSplitOptions.RemoveEmptyEntries)[0]);