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

如何在ASP.NET C#应用中自动获取DocuSign eSignature API的code参数

在ASP.NET C#中自动获取DocuSign OAuth授权码(Code)的实现方案

核心思路

借助ASP.NET的路由机制作为DocuSign授权回调地址,当用户完成DocuSign端的授权操作后,平台会自动重定向到预设的回调接口,直接从请求参数中提取code,全程无需手动复制。

具体实现步骤

1. 配置DocuSign应用回调地址

在DocuSign开发者后台,将你的ASP.NET应用回调URL(例如https://localhost:5001/DocuSign/Callback)设置为授权回调地址,确保和代码中的路由完全一致。

2. 生成DocuSign授权跳转链接

在ASP.NET中构造授权URL,引导用户跳转至DocuSign的授权页面:

public IActionResult RedirectToDocuSignAuth()
{
    var clientId = "你的DocuSign Client ID";
    var redirectUri = "https://localhost:5001/DocuSign/Callback";
    var scope = "signature"; // 根据业务需求调整权限范围
    var authUrl = $"https://account-d.docusign.com/oauth/auth?response_type=code&client_id={clientId}&redirect_uri={Uri.EscapeDataString(redirectUri)}&scope={scope}";
    
    return Redirect(authUrl);
}

3. 实现回调接口自动获取Code

添加Action/Page Handler接收回调请求,直接从QueryString中提取code:

public async Task<IActionResult> Callback(string code, string state = null)
{
    if (string.IsNullOrEmpty(code))
    {
        return BadRequest("授权失败,未获取到有效code");
    }

    // 直接用获取到的code请求access token
    var accessToken = await FetchDocuSignAccessToken(code);
    // 后续可将token存入缓存或用于API调用
    return Ok("授权成功,已自动获取access token");
}

private async Task<string> FetchDocuSignAccessToken(string code)
{
    var clientId = "你的DocuSign Client ID";
    var clientSecret = "你的DocuSign Client Secret";
    var redirectUri = "https://localhost:5001/DocuSign/Callback";
    var tokenUrl = "https://account-d.docusign.com/oauth/token";

    using var httpClient = new HttpClient();
    var formContent = new FormUrlEncodedContent(new[]
    {
        new KeyValuePair<string, string>("grant_type", "authorization_code"),
        new KeyValuePair<string, string>("code", code),
        new KeyValuePair<string, string>("client_id", clientId),
        new KeyValuePair<string, string>("client_secret", clientSecret),
        new KeyValuePair<string, string>("redirect_uri", redirectUri)
    });

    var response = await httpClient.PostAsync(tokenUrl, formContent);
    response.EnsureSuccessStatusCode();
    var tokenResult = await response.Content.ReadFromJsonAsync<DocuSignTokenModel>();
    
    return tokenResult.AccessToken;
}

// 定义token响应模型
public class DocuSignTokenModel
{
    [JsonPropertyName("access_token")]
    public string AccessToken { get; set; }
    [JsonPropertyName("expires_in")]
    public int ExpiresIn { get; set; }
    // 可根据DocuSign返回的字段补充其他属性
}

4. 完整授权流程

  • 用户访问ASP.NET应用中的授权入口(比如/DocuSign/Authorize),会自动跳转到DocuSign的登录授权页面。
  • 用户完成登录并授权后,DocuSign会自动重定向到回调接口,此时接口已自动拿到code并完成token的获取。

注意事项

  • 开发环境中localhost允许使用HTTP,但正式环境必须使用HTTPS,DocuSign OAuth回调要求非localhost地址必须为HTTPS。
  • 建议添加state参数防范CSRF攻击:生成授权URL时生成随机state值并存入Session,回调时验证该值是否匹配。
  • 授权码code仅能使用一次,获取token后立即失效,需重新授权生成新code。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 07:27:11