DocuSign: получение списка всех документов, к которым у пользователя есть доступ - PullRequest
0 голосов
/ 07 февраля 2019

Мы обновляем приложение, чтобы позволить пользователям загружать / прикреплять файлы напрямую из различных внешних источников (DocuSign, Drop Box, Google Drive и т. Д.).В настоящее время я пытаюсь получить список всех файлов, к которым пользователь имеет доступ в своей учетной записи DocuSign.Я работаю в C # с библиотекой API DocuSign .NET REST (DocuSign.eSign.dll).

Я могу пройти аутентификацию пользователя и получить идентификатор его учетной записи по умолчанию.Я пытаюсь использовать метод FoldersApi.Search, но получаю сообщение «404 - Ошибка файла или каталога не найдена».Может ли кто-нибудь, знакомый с DocuSign, просмотреть мой код и сказать, что я могу делать не так?

var apiClient = new ApiClient("https://demo.docusign.net/restapi");

var code = Request["Code"];
var token = apiClient.GenerateAccessToken(IntegratorKey, SecretKey, code);

var userInfo = DocuSignClient.GetUserInfo(token.access_token);
var accountId = "";
foreach (var account in userInfo.Accounts) {
    if (account.IsDefault == "true") {
        accountId = account.AccountId;
        apiClient = new ApiClient(account.BaseUri);
        break;
    }
}

var configuration =
    new Configuration(apiClient: apiClient, accessToken: token.access_token);

var foldersApi = new FoldersApi(configuration);
var response = foldersApi.Search(accountId, "all");
foreach (var folder in response.FolderItems) {
    Context.Response.Write(folder.FolderId);
}

Ответы [ 2 ]

0 голосов
/ 08 февраля 2019

Я думаю, что вижу проблему с вашим кодом, хотя в данный момент не подходит для тестирования, надеюсь, вы скоро подтвердите.В первой строке вы правильно создаете экземпляр клиента API для демонстрационной среды с помощью:

var apiClient = new ApiClient("https://demo.docusign.net/restapi");

Однако после аутентификации и получения информации о пользователе вы затем заново конфигурируете базовый путь с помощью:

apiClient = new ApiClient(account.BaseUri);

Я считаю, что это может привести к ошибке 404, поскольку она будет содержать только домен.Другими словами, это имеет эффект:

apiClient = new ApiClient("https://demo.docusign.net");

Вам нужно добавить оставшиеся /restapi/v2/{accountId}, чтобы сформировать правильный URL базового запроса, попробуйте что-то вроде этого:

apiClient = new ApiClient(account.BaseUri + "/restapi/v2/accounts/" + accountId);

--------------------------------

ОБНОВЛЕНИЕ

Только что провёл некоторое тестирование и все заработало, однако учтите, что я использую Node.js, а не C #.Тем не менее, должна быть та же логика, хотя.Вот мой рабочий код для получения всех заполненных конвертов:

docusign.Configuration.default.setDefaultApiClient(apiClient);

var foldersApi = new docusign.FoldersApi(docusign.Configuration.default.getDefaultApiClient());
foldersApi.search(accountId, "completed")
    .then(function(response) { 
        console.log("response = " + JSON.stringify(response, null, 2));
        return null;
    })
    .catch(function (error){
    if (error) {
      console.log('Error: ' + JSON.stringify(error));
      return error;
    }
  });
0 голосов
/ 07 февраля 2019

Предостережение: я никогда раньше не использовал DocuSign.Но, посмотрев на REST API и клиент .NET, я нашел возможное решение.

Похоже, вы неправильно используете поиск по папкам.Подпись этого API выглядит следующим образом:

public FolderItemResponse Search (string accountId, string searchFolderId, FoldersApi.SearchOptions options = null)

Где допустимые значения для searchFolderId: drafts, awaiting_my_signature, completed или out_for_signature, но вы указалиall, который является одним из параметров поиска , а не одним из идентификаторов папки поиска .

Правильное использование будет выглядеть примерно так:

var response = foldersApi.Search(accountId, "completed", FoldersApi.SearchOptions.all);

, где вы бы заменили completed на любое нужное вам значение из допустимых значений, которые я упомянул выше.

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