Ошибка при использовании DocuSign AuthenticationApi.login () для устаревшей аутентификации - отсутствует grant_type / code - PullRequest
0 голосов
/ 03 октября 2018

Я пытаюсь использовать вызов API Authentication :: login () в DocuSign Java SDK и получаю сообщение об ошибке.Вот некоторый код:

@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.

Есть идеи, что я здесь не так делаю?Я уверен, что это что-то простое ...

Спасибо за ваше время.

Ответы [ 2 ]

0 голосов
/ 27 августа 2019

На всякий случай, если кто-то ищет полный унаследованный код, который работает!Приведенный ниже фрагмент кода C # работает.Это готовый к использованию код.Я проверил это, и это работает.Вам придется создать EnvelopeDefinition отдельно, так как этот код не включен.Тем не менее, фрагмент ниже аутентифицирует пользователя и успешно отправит конверт и вернет идентификатор конверта:

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;
0 голосов
/ 04 октября 2018

Вы хотите использовать аутентификацию Legacy?

. В этом случае вам необходимо выполнить ряд обновлений кода.

  • Только вызов new ApiClient(base_url)
  • Установите заголовок X-DocuSign-Authentication -

Из старого файла Readme:

String authHeader = "{\"Username\":\"" +  username +
   "\",\"Password\":\"" +  password + 
   "\",\"IntegratorKey\":\"" +  integratorKey + "\"}";
apiClient.addDefaultHeader("X-DocuSign-Authentication", authHeader);
  • Затем используйте authenticationApi.login длянайдите идентификаторы учетной записи пользователя и соответствующие базовые URL.

authenticationApi.login doe not фактически регистрирует вас. (!)

Скорее, этот метод просто дает вам информацию о текущем пользователе.

Нет логина с API, так как он не использует сеансы.Вместо этого учетные данные передаются при каждом вызове API.Учетные данные могут быть токеном доступа (предпочтительно) или через устаревшую аутентификацию, триплет имени / пароля / ключа интеграции.

При использовании устаревшей аутентификации секрет клиента не используется.

Дополнительная информация: см. Раздел Readme для использования имени пользователя / пароля в этой старой версии репо.

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