我正在运行官方的SDK Junit代码,它工作得很好。但是,当我将帐户信息更改为我的帐户信息时,发生了异常。Debug表示在发送到终结点"/oauth/token“时返回http状态400,
我已经将在docusign管理页面中生成的私钥保存到"docusign_private_key.txt“中。
ApiClient apiClient = new ApiClient (BaseUrl);
//String currentDir = System.getProperty("user.dir");
try
{
// IMPORTANT NOTE:
// the first time you ask for a JWT access token, you should grant access by making the following call
// get DocuSign OAuth authorization url:
//String oauthLoginUrl = apiClient.getJWTUri(IntegratorKey, RedirectURI, OAuthBaseUrl);
// open DocuSign OAuth authorization url in the browser, login and grant access
//Desktop.getDesktop().browse(URI.create(oauthLoginUrl));
// END OF NOTE
byte[] privateKeyBytes = null;
try
{
privateKeyBytes = Files.readAllBytes (Paths.get (privateKeyFullPath) );
}
catch (IOException ioExcp)
{
Assert.assertEquals (null, ioExcp);
}
if (privateKeyBytes == null)
{
return;
}
java.util.List<String> scopes = new ArrayList<String>();
scopes.add (OAuth.Scope_SIGNATURE);
scopes.add (OAuth.Scope_IMPERSONATION);
OAuth.OAuthToken oAuthToken = apiClient.requestJWTUserToken (IntegratorKey, UserId, scopes, privateKeyBytes, 3600);
}发布于 2019-01-15 16:47:55
问题解决了。
SDK JUnit代码定义了一个名为"UserId“的参数,需要填写的是接口用户名,而不是管理页面中的接口帐号ID。
感谢各位好心人。
发布于 2019-01-15 02:11:34
根据评论中的注释,您需要为您的应用程序使用每个密钥授予一次性用户同意,您是否做到了这一点?如果您启用了组织(这是一个企业功能),那么您可以在整个帐户中执行此操作,否则您将需要逐个手动授予同意(即逐个用户)。
如果您需要手动授予许可(这是大多数集成所做的),您需要使用重定向URI配置您将通过代码传递的Integrator Key,然后在web浏览器中将您的用户重定向到以下URL ( URL的"-d“部分意味着这将用于演示环境):
https://account-d.docusign.com/oauth/auth?
response_type=YOUR_RESPONSE_TYPE
&scope=open_id
&client_id=YOUR_INTEGRATOR_KEY
&state=YOUR_CUSTOM_STATE
&redirect_uri=YOUR_REDIRECT_URI
&admin_consent_scope=YOUR_REQUESTED_SCOPES如果操作正确,用户将被带到标准的DocuSign登录页面。成功登录后,他们可以显式地同意您的应用程序,然后将通过您配置的重定向URI参数重定向回您的应用程序。
以下是一个指南,解释了如何使用这两种方法获得同意:
https://developers.docusign.com/esign-rest-api/guides/authentication/obtaining-consent
https://stackoverflow.com/questions/54177199
复制相似问题