You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

DocuSign权限问题:Shared Envelopes转Shared Access后无法查看信封

问题:DocuSign Shared Access 用户无法通过嵌入控制台视图查看信封

之前使用DocuSign的「Shared Envelopes」功能,可允许非信封发件人或收件人的特定用户在应用内正常查看信封,实现方式是调用SDK的Envelopes::createConsoleView方法,遵循官方嵌入UI的实现规范。

但DocuSign已弃用「Shared Envelopes」,改用新的「Shared Access」功能。将用户从旧功能迁移到新功能后,用户无法再查看信封,调用CreateConsoleView时触发如下错误:

Error calling CreateConsoleView: {"errorCode":"USER_NOT_ENVELOPE_SENDER_OR_RECIPIENT","message":"This user is not the sender or a recipient of the envelope. Only the sender or a recipient of the envelope may perform the requested operation."}

原实现代码:

//API - EnvelopeViews:createConsoleView
public string GetEnvelopeViewUrl(string accountId, string envelopeId, string returnUrl)
{
    var token = _tokenService.FetchToken(accountId);
    var apiClient = new DocuSignClient($"{token.Account.BaseUri}/restapi");
    apiClient.Configuration.DefaultHeader.Add("Authorization", $"Bearer {token.Value}");
    var envelopesApi = new EnvelopesApi(apiClient);
    var apiAccountId = _config["DocuSign:ApiAccountId"];

    ConsoleViewRequest viewRequest = new ConsoleViewRequest
    {
        EnvelopeId = envelopeId,
        ReturnUrl = returnUrl
    };

    var recipientView = envelopesApi.CreateConsoleView(apiAccountId, viewRequest);
    return recipientView.Url;
}

明确这些用户并非信封的发件人或收件人,而这正是「Shared Access」的设计初衷,需要指导如何让这类用户像之前一样在应用中查看信封。


解决方案

核心原因

CreateConsoleView方法的权限校验仅针对信封的发件人或收件人,Shared Access用户不属于这两类角色,因此需要改用**CreateSenderView**方法,并配置正确的用户参数。

修改步骤

  1. 替换请求对象:将ConsoleViewRequest改为SenderViewRequest
  2. 添加用户标识:在请求中指定UserId参数,传入该Shared Access用户的DocuSign唯一用户ID
  3. 更换API方法:调用envelopesApi.CreateSenderView而非CreateConsoleView

修改后的代码示例

//API - EnvelopeViews:createSenderView
public string GetEnvelopeViewUrl(string accountId, string envelopeId, string returnUrl, string sharedUserId)
{
    var token = _tokenService.FetchToken(accountId);
    var apiClient = new DocuSignClient($"{token.Account.BaseUri}/restapi");
    apiClient.Configuration.DefaultHeader.Add("Authorization", $"Bearer {token.Value}");
    var envelopesApi = new EnvelopesApi(apiClient);
    var apiAccountId = _config["DocuSign:ApiAccountId"];

    SenderViewRequest viewRequest = new SenderViewRequest
    {
        EnvelopeId = envelopeId,
        ReturnUrl = returnUrl,
        UserId = sharedUserId // 指定Shared Access用户的DocuSign用户ID
    };

    var senderView = envelopesApi.CreateSenderView(apiAccountId, viewRequest);
    return senderView.Url;
}

额外注意事项

  • 确保在DocuSign控制台中已为该Shared Access用户授予目标信封的「查看」权限
  • sharedUserId需传入用户在DocuSign系统中的唯一ID,可通过DocuSign Users API获取,或从账户管理界面导出

内容的提问来源于stack exchange,提问作者Baxter

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.11 08:32:16