使用 DocuSign 的 C# SDK 开发组织的内部应用程序以发送信封/嵌入签名。按照快速入门示例,我可以执行这些操作。由于它使用演示/测试 DocuSign 环境,因此在部署此应用程序时,代码将需要调用 DocuSign 生产环境。
由于组织的员工而不是客户将使用此应用程序,因此代码使用授权码授予,而不是 JWT 令牌。
那么,在获取访问令牌后,代码是否应该从 DocuSignClient 实例调用 SetOAuthBasePath?SDK 表示“使用此方法设置自定义 OAuth 基本路径”。但 DocuSign 又如何知道呢?
我假设对用户的 BaseUri 的 UserInfo 端点调用已经具有正确的环境(因为他们已经过身份验证),然后 BaseUri 将“指向”适当的环境。真的吗?
我看到 C# SDK 确实有我们可以引用的常量。我在生产环境中是否应该使用这些来设置:
public class DocuSignClient
{
public const string Production_REST_BasePath = "https://www.docusign.net/restapi";
public const string Demo_REST_BasePath = "https://demo.docusign.net/restapi";
...
}
public class OAuth
{
...
public static string Demo_OAuth_BasePath = "account-d.docusign.com";
public static string Production_OAuth_BasePath = "account.docusign.com";
}
代码示例而不是DocuSignClient docuSignClient = new DocuSignClient()
:
protected DocuSignClient GetDocuSignClient(bool isForAuth, bool useProd, string? userBaseUri = null)
{
DocuSignClient rtn = new DocuSignClient();
//DocuSignClient defaults to demo environment
if (isForAuth && useProd)
{
rtn.SetOAuthBasePath(OAuth.Production_OAuth_BasePath);
}
if (!isForAuth && !string.IsNullOrEmpty(userBaseUri))
{
//we should have a User BaseUri, which will be based on the environment authenticated
rtn.SetBasePath(userBaseUri);
}
return rtn;
}
SDK 使用两个基本路径 URL:一个用于 OAuth 服务,一个用于 REST API 服务。
这些路径是默认设置为开发人员(演示)系统的。
对于生产你应该:
将 OAuth URL (
SetOAuthBasePath
) 明确设置为生产 OAuth 系统用户登录后,调用
UserInfo
以确定用户的信息,包括将要使用的用户帐户(其默认帐户或其他帐户)使用的 API 基本路径。使用步骤 2 中的数据设置 SDK 的 REST API 基本路径。
设置 API 基本路径
UserInfo 响应中的属性
BaseUri
不是以 结尾的/restapi
,这是 REST API 服务所需的。因此您需要明确添加它。以下是 C# SDK 测试套件中的一个示例,它在 UserInfo 响应中查找默认帐户。 链接根本问题是 Docusign 开发者环境 (demo) 只有一个 API 基本路径。相比之下,生产系统有许多API 基本路径。您的代码需要确定哪个 API 基本路径适合当前用户所属的帐户(可能有多个帐户)。
请注意,UserInfo 调用与OAuth 服务一起使用。这就是为什么即使您还不知道用户的 API 基本路径,它也能正常工作。
多个帐户
用户属于一个默认帐户。他们通常也可以属于多个帐户。让用户默认使用他们的默认帐户,同时也让他们能够更改要使用的帐户,这是一个好主意。并且让用户为您的应用程序更改他们的默认帐户。
您的问题
那么,在获取访问令牌后,代码是否应该从 DocuSignClient 实例调用 SetOAuthBasePath?SDK 表示“使用此方法设置自定义 OAuth 基本路径”。但 DocuSign 怎么知道呢?
[您应该明确调用 SetOAuthBasePath。默认值为 demo。]
我假设 UserInfo 端点对用户的 BaseUri 的调用已经具有正确的环境(因为他们已经过身份验证),然后 BaseUri 将“指向”适当的环境。对吗?
[BaseUri 不用于 UserInfo 端点,而是使用 OAuth 基本路径。]