DocuSign:获取用户有权访问的所有文档的列表

时间:2019-02-06 23:13:35

标签: c# asp.net docusignapi

我们正在更新一个应用程序,以允许用户直接从各种外部来源(DocuSign,投递箱,Google云端硬盘等)上载/附加文件。我目前正在尝试获取用户可以在其DocuSign帐户中访问的所有文件的列表。我正在使用带有DocuSign .NET REST API库(DocuSign.eSign.dll)的C#。

我可以向用户进行身份验证并获得其默认帐户ID。我正在尝试使用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 :(得分:1)

注意:我以前从未使用过DocuSign。但是,在研究了REST API和.NET客户端之后,我想出了一个可能的解决方案。

您似乎在使用文件夹搜索不正确。该API的签名如下:

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

searchFolderId的有效值为draftsawaiting_my_signaturecompletedout_for_signature,但是您提供了all这是搜索选项之一,而不是搜索文件夹ID 之一。

正确用法如下:

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

您将从上面提到的有效值中将completed替换为所需的任何值。

答案 1 :(得分:1)

我认为我的代码有问题,尽管目前尚无法进行测试,希望您能尽快确认。在第一行,您可以使用

正确实例化演示环境的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;
    }
  });