使用 DocuSign AuthenticationApi.login() 进行旧版身份验证时出错 - 缺少 grant_type/code
Error using DocuSign AuthenticationApi.login() for Legacy Authentication - Missing grant_type/code
我正在尝试在 DocuSign Java SDK 中使用 Authentication::login() API 调用,但收到错误消息。这是一些代码:
@Component
public class TestClass {
private ApiClient apiClient;
public void authenticate() {
this.apiClient = new ApiClient("account-d.docusign.com", "docusignAccessCode",
"mySecretIntegratorKey", "myClientSecret");
final AuthenticationApi authenticationApi = new AuthenticationApi(this.apiClient);
try {
// ERROR ON THE LINE BELOW
final LoginInformation loginInformation = authenticationApi.login();
} catch (final ApiException e) {
// do something appropriate
}
}
}
mySecretIntegratorKey
和 myClientSecret
值显然不是我发送的真实值,但其他值是。
这是我在调用 login() 时收到的错误:
Caused by: org.apache.oltu.oauth2.common.exception.OAuthSystemException: Missing grant_type/code
at com.docusign.esign.client.auth.OAuth$OAuthJerseyClient.execute(OAuth.java:184)
at org.apache.oltu.oauth2.client.OAuthClient.accessToken(OAuthClient.java:65)
at org.apache.oltu.oauth2.client.OAuthClient.accessToken(OAuthClient.java:55)
at org.apache.oltu.oauth2.client.OAuthClient.accessToken(OAuthClient.java:71)
at com.docusign.esign.client.auth.OAuth.updateAccessToken(OAuth.java:92)
... 123 common frames omitted
我知道这使用的是较旧的旧版身份验证,但是我有一个限制,在今年年初之前我无法升级到较新的身份验证方法。所以现在我需要使用 SDK 版本 2.2.1 使用这个旧方法。
知道我做错了什么吗?我确定这很简单...
感谢您的宝贵时间。
您想使用旧版身份验证吗?
在这种情况下,您需要对代码进行一些更新。
- 只调用
new ApiClient(base_url)
- 设置X-DocuSign-Authenticationheader--
来自 old Readme:
String authHeader = "{\"Username\":\"" + username +
"\",\"Password\":\"" + password +
"\",\"IntegratorKey\":\"" + integratorKey + "\"}";
apiClient.addDefaultHeader("X-DocuSign-Authentication", authHeader);
- 然后使用
authenticationApi.login
查找用户的帐户 ID 和匹配的基本 URL。
authenticationApi.login
doe 不是 实际登录。(!)
相反,该方法只为您提供有关当前用户的信息。
API 没有登录,因为它不使用会话。相反,凭据通过 every API 调用传递。凭据可以是访问令牌(首选),或通过旧版身份验证,名称/密码/集成密钥三元组。
使用旧版身份验证时,不使用客户端密码。
更多信息:请参阅自述文件部分了解如何在此 old version of the repo.
中使用 username/password
以防万一有人在寻找完整的有效遗留代码!下面的 C# 代码片段有效。这是生产就绪代码。我已经测试过它并且有效。由于不包含此代码,因此您必须单独创建一个 EnvelopeDefinition。但是,下面的代码将对用户进行身份验证并成功发送信封并取回信封 ID:
string username = "john.bunce@mail.com";
string password = "your_password";
string integratorKey = "your_integration_key";
ApiClient apiClient = new ApiClient("https://www.docusign.net/restapi");
string authHeader = "{\"Username\":\"" + username + "\", \"Password\":\"" + password + "\", \"IntegratorKey\":\"" + integratorKey + "\"}";
apiClient.Configuration.AddDefaultHeader("X-DocuSign-Authentication", authHeader);
AuthenticationApi authApi = new AuthenticationApi(apiClient.Configuration);
LoginInformation loginInfo = authApi.Login();
string accountId = loginInfo.LoginAccounts[0].AccountId;
string baseURL = loginInfo.LoginAccounts[0].BaseUrl;
string[] baseUrlArray= Regex.Split(baseURL, "/v2");
ApiClient apiClient2 = new ApiClient(baseUrlArray[0]);
string authHeader2 = "{\"Username\":\"" + username + "\", \"Password\":\"" + password + "\", \"IntegratorKey\":\"" + integratorKey + "\"}";
apiClient2.Configuration.AddDefaultHeader("X-DocuSign-Authentication", authHeader2);
EnvelopesApi envelopesApi = new EnvelopesApi(apiClient2.Configuration);
EnvelopeSummary results = envelopesApi.CreateEnvelope(accountId, envelopeDefinition);
string envelopeID = results.EnvelopeId;
我正在尝试在 DocuSign Java SDK 中使用 Authentication::login() API 调用,但收到错误消息。这是一些代码:
@Component
public class TestClass {
private ApiClient apiClient;
public void authenticate() {
this.apiClient = new ApiClient("account-d.docusign.com", "docusignAccessCode",
"mySecretIntegratorKey", "myClientSecret");
final AuthenticationApi authenticationApi = new AuthenticationApi(this.apiClient);
try {
// ERROR ON THE LINE BELOW
final LoginInformation loginInformation = authenticationApi.login();
} catch (final ApiException e) {
// do something appropriate
}
}
}
mySecretIntegratorKey
和 myClientSecret
值显然不是我发送的真实值,但其他值是。
这是我在调用 login() 时收到的错误:
Caused by: org.apache.oltu.oauth2.common.exception.OAuthSystemException: Missing grant_type/code
at com.docusign.esign.client.auth.OAuth$OAuthJerseyClient.execute(OAuth.java:184)
at org.apache.oltu.oauth2.client.OAuthClient.accessToken(OAuthClient.java:65)
at org.apache.oltu.oauth2.client.OAuthClient.accessToken(OAuthClient.java:55)
at org.apache.oltu.oauth2.client.OAuthClient.accessToken(OAuthClient.java:71)
at com.docusign.esign.client.auth.OAuth.updateAccessToken(OAuth.java:92)
... 123 common frames omitted
我知道这使用的是较旧的旧版身份验证,但是我有一个限制,在今年年初之前我无法升级到较新的身份验证方法。所以现在我需要使用 SDK 版本 2.2.1 使用这个旧方法。
知道我做错了什么吗?我确定这很简单...
感谢您的宝贵时间。
您想使用旧版身份验证吗?
在这种情况下,您需要对代码进行一些更新。
- 只调用
new ApiClient(base_url)
- 设置X-DocuSign-Authenticationheader--
来自 old Readme:
String authHeader = "{\"Username\":\"" + username +
"\",\"Password\":\"" + password +
"\",\"IntegratorKey\":\"" + integratorKey + "\"}";
apiClient.addDefaultHeader("X-DocuSign-Authentication", authHeader);
- 然后使用
authenticationApi.login
查找用户的帐户 ID 和匹配的基本 URL。
authenticationApi.login
doe 不是 实际登录。(!)
相反,该方法只为您提供有关当前用户的信息。
API 没有登录,因为它不使用会话。相反,凭据通过 every API 调用传递。凭据可以是访问令牌(首选),或通过旧版身份验证,名称/密码/集成密钥三元组。
使用旧版身份验证时,不使用客户端密码。
更多信息:请参阅自述文件部分了解如何在此 old version of the repo.
中使用 username/password以防万一有人在寻找完整的有效遗留代码!下面的 C# 代码片段有效。这是生产就绪代码。我已经测试过它并且有效。由于不包含此代码,因此您必须单独创建一个 EnvelopeDefinition。但是,下面的代码将对用户进行身份验证并成功发送信封并取回信封 ID:
string username = "john.bunce@mail.com";
string password = "your_password";
string integratorKey = "your_integration_key";
ApiClient apiClient = new ApiClient("https://www.docusign.net/restapi");
string authHeader = "{\"Username\":\"" + username + "\", \"Password\":\"" + password + "\", \"IntegratorKey\":\"" + integratorKey + "\"}";
apiClient.Configuration.AddDefaultHeader("X-DocuSign-Authentication", authHeader);
AuthenticationApi authApi = new AuthenticationApi(apiClient.Configuration);
LoginInformation loginInfo = authApi.Login();
string accountId = loginInfo.LoginAccounts[0].AccountId;
string baseURL = loginInfo.LoginAccounts[0].BaseUrl;
string[] baseUrlArray= Regex.Split(baseURL, "/v2");
ApiClient apiClient2 = new ApiClient(baseUrlArray[0]);
string authHeader2 = "{\"Username\":\"" + username + "\", \"Password\":\"" + password + "\", \"IntegratorKey\":\"" + integratorKey + "\"}";
apiClient2.Configuration.AddDefaultHeader("X-DocuSign-Authentication", authHeader2);
EnvelopesApi envelopesApi = new EnvelopesApi(apiClient2.Configuration);
EnvelopeSummary results = envelopesApi.CreateEnvelope(accountId, envelopeDefinition);
string envelopeID = results.EnvelopeId;