Java 使用requestJWTUserToken时出错,请替换我的帐户信息SDK项目junit代码

Java 使用requestJWTUserToken时出错,请替换我的帐户信息SDK项目junit代码,java,docusignapi,Java,Docusignapi,我正在运行官方的SDK Junit代码,它运行得很好。但当我将帐户信息更改为我的时,会发生异常。 Debug说它在发布到端点“/oauth/token”时返回http状态400 我已将在docusign管理页面中生成的私钥保存到“docusign\u private\u key.txt”中 ApiClient-ApiClient=新的ApiClient(BaseUrl); //字符串currentDir=System.getProperty(“user.dir”); 尝试 { //重要提示: /

我正在运行官方的SDK Junit代码,它运行得很好。但当我将帐户信息更改为我的时,会发生异常。 Debug说它在发布到端点“/oauth/token”时返回http状态400

我已将在docusign管理页面中生成的私钥保存到“docusign\u private\u key.txt”中

ApiClient-ApiClient=新的ApiClient(BaseUrl);
//字符串currentDir=System.getProperty(“user.dir”);
尝试
{
//重要提示:
//第一次请求JWT访问令牌时,应通过以下调用授予访问权限
//获取DocuSign OAuth授权url:
//字符串oauthLoginUrl=apiClient.getJWTUri(IntegratorKey、RedirectURI、OAuthBaseUrl);
//在浏览器中打开DocuSign OAuth授权url,登录并授予访问权限
//getDesktop().browse(URI.create(oauthLoginUrl));
//尾声
byte[]privateKeyBytes=null;
尝试
{
privateKeyBytes=Files.readAllBytes(path.get(privateKeyFullPath));
}
捕获(IOException ioExcp)
{
Assert.assertEquals(null,ioExcp);
}
if(privateKeyBytes==null)
{
返回;
}
java.util.List scopes=new ArrayList();
scopes.add(OAuth.Scope_签名);
scopes.add(OAuth.Scope\u模拟);
OAuth.OAuthToken OAuthToken=apiClient.requestJWTUserToken(IntegratorKey,UserId,scopes,privateKeyBytes,3600);
}

根据评论中的说明,您需要对每个密钥授予一次性用户许可,您的应用程序才能使用它,您是否已经这样做了?如果您启用了组织(这是一项企业功能),那么您可以在整个帐户中执行此操作,否则您需要逐个(即逐个用户)手动授予同意

如果手动授予许可(这是大多数集成所做的),您需要使用将要通过代码传递的重定向URI配置您的
集成器密钥
,然后在web浏览器中将用户重定向到以下URL(URL的“-d”部分表示这将用于演示环境):

如果操作正确,用户将进入标准DocuSign登录页面。成功登录后,他们可以显式授予您的应用程序许可,然后通过您配置的重定向URI参数重新定向回您的应用程序

以下是一个指南,说明如何使用任一方法获得同意:

问题已解决

sdkjunit代码定义了一个名为“UserId”的参数,它应该由“API Username”填充,而不是来自Admin页面的“API帐户ID”


感谢所有善良的人们。

你有错误日志吗?正如@Haem提到的,如果你有实际的错误消息或描述会有所帮助,尽管我已经发布了一个可能是你的问题的答案。
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);
}
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