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

Asp.net MVC调用Adobe Sign API获取AccessToken遇401未授权问题

Adobe Sign Client Credentials 模式401 Unauthorized问题排查与解决

问题场景

我正在使用Asp.net MVC开发,此前通过DocuSign实现了向客户发送PDF邮件获取签名的功能,现在客户要求改用Adobe Sign。尝试通过代码生成access token时,尽管凭据正确,却始终收到401 Unauthorized响应。但通过Adobe Sign官网生成的token在代码中可正常使用,只是该token1小时后过期。

相关代码如下:

string clientId = "**********";
string clientSecret = "*************";

var tokenUrl = "https://secure.na3.adobesign.com/oauth/v2/token";

var tokenRequestBody = new Dictionary<string, string>
{
    {"client_id", clientId},
    {"client_secret", clientSecret},
    {"grant_type", "client_credentials"},
    {"scope", "user_read user_write user_login agreement_read agreement_write agreement_send library_write widget_write library_read widget_read"}
};

var tokenResponse = await client.PostAsync(tokenUrl, new FormUrlEncodedContent(tokenRequestBody));
if (tokenResponse.IsSuccessStatusCode)
{
    // 无法进入此代码块
}

排查与解决步骤

  • 匹配OAuth端点与应用环境
    确保请求的tokenUrl和你的Adobe Sign应用注册区域一致:

    • 北美环境:https://secure.na3.adobesign.com/oauth/v2/token
    • 欧盟环境:https://secure.eu1.adobesign.com/oauth/v2/token
    • 亚太环境:https://secure.ap1.adobesign.com/oauth/v2/token
      区域不匹配会直接返回401错误。
  • 启用Client Credentials授权模式
    Adobe Sign的Client Credentials模式需要在开发者控制台手动开启:

    1. 登录Adobe Sign开发者控制台,找到目标应用
    2. 进入「OAuth Settings」页面
    3. 勾选「Client Credentials」选项并保存
      官网生成的token属于Authorization Code模式,和Client Credentials是独立权限,前者可用不代表后者已启用。
  • 移除无效Scope
    user_login权限不适用于Client Credentials模式(该模式为服务端到服务端授权,无需用户登录权限),移除后重试:

    {"scope", "user_read user_write agreement_read agreement_write agreement_send library_write widget_write library_read widget_read"}
    

    无效Scope会触发权限验证失败。

  • 校验Client ID与Secret的准确性
    直接从开发者控制台复制Client ID和Secret,避免手动输入时的大小写、空格或特殊字符错误,不要在字符串前后添加多余引号或空格。

  • 确认请求头Content-Type
    虽然FormUrlEncodedContent默认会设置Content-Type: application/x-www-form-urlencoded,但如果存在自定义拦截器修改请求头,可能导致验证失败,可手动强制设置:

    var content = new FormUrlEncodedContent(tokenRequestBody);
    content.Headers.ContentType = new MediaTypeHeaderValue("application/x-www-form-urlencoded");
    var tokenResponse = await client.PostAsync(tokenUrl, content);
    
  • 排查网络拦截问题
    如果服务器在企业内网,检查是否有代理或防火墙拦截了对Adobe Sign端点的请求,可在本地开发环境直接请求端点,排除网络层面的影响。

内容的提问来源于stack exchange,提问作者Umer Abdul Wahid

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.12 23:15:09