我们正在更新一个应用程序,以允许用户直接从各种外部来源(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);
}
答案 0 :(得分:1)
注意:我以前从未使用过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
这是搜索选项之一,而不是搜索文件夹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;
}
});