ошибка при использовании requestJWTUserToken, просто замените информацию моей учетной записи SDK проекта, код junit - PullRequest
0 голосов
/ 14 января 2019

Я использую официальные коды SDK Junit, и он работает нормально. Но когда я изменяю информацию учетной записи на мою, возникает исключение. Debug говорит, что возвращает HTTP-статус 400 при отправке в конечную точку "/ oauth / token",

Я сохранил свой закрытый ключ, сгенерированный на странице администратора 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);
}

Ответы [ 2 ]

0 голосов
/ 15 января 2019

Проблема решена.

Код SDK JUnit определяет параметр «UserId», он должен быть заполнен «Имя пользователя API», а не «Идентификатор учетной записи API» со страницы администратора.

Спасибо всем добрым людям.

0 голосов
/ 14 января 2019

Согласно примечанию в комментариях, вам необходимо предоставить одноразовое согласие пользователя для каждого ключа, чтобы приложение могло его использовать, вы это сделали? Если у вас включена организация (что является корпоративной функцией), то вы можете сделать это для всей учетной записи, в противном случае вам нужно будет дать согласие вручную по одному (т. Е. По пользователю).

Если вы даете согласие вручную (что и делают большинство интеграций), вам нужно настроить Integrator Key с URI перенаправления, который вы будете передавать через код, а затем перенаправить пользователя на следующий URL в веб-браузере ("- - d "часть URL означает, что это будет для демонстрационной среды):

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. После успешного входа в систему они могут явно дать согласие на ваше приложение, а затем будут перенаправлены обратно в ваше приложение через настроенный вами параметр Redirect URI.

Вот руководство, которое объясняет, как получить согласие, используя любой метод:

https://developers.docusign.com/esign-rest-api/guides/authentication/obtaining-consent

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...