使用Python SDK获取DocuSign Access Token失败求助
解决DocuSign JWT获取Access Token的错误问题
错误原因分析
第一个444错误
- 混淆了OAuth授权服务器域名与API主机地址:
account-d.docusign.com是沙箱环境的OAuth授权域名,你错误地将其设置为api_client.host(API请求的主机),导致请求路由错误。 - 多余的私钥编码操作:
encode("ascii").decode("utf-8")属于无效操作,可能引发潜在的编码问题。
第二个DNS解析错误
oauth_host_name格式错误:该参数仅需填写纯域名,你传入了带https://前缀的完整URL(https://demo.docusign.net/restapi),导致请求库错误地将https解析为主机名,触发DNS解析失败。
修正后的代码
def get_access_token(request): # 直接读取私钥文件内容 with open("path/to/private.key", "r") as f: private_key = f.read() api_client = ApiClient() # 沙箱环境OAuth授权域名(仅填域名,不带协议) oauth_host = "account-d.docusign.com" # 沙箱环境API主机地址(完整URL) api_host = "https://demo.docusign.net/restapi" api_client.set_oauth_host_name(oauth_host_name=oauth_host) api_client.host = api_host token = api_client.request_jwt_user_token( client_id=settings.CLIENT_ID, user_id=settings.IMPERSONATED_USER_ID, oauth_host_name=oauth_host, private_key_bytes=private_key, expires_in=3600, scopes=["signature", "impersonation"] ) access_token = token.access_token return access_token
关键注意事项
- 环境区分:
- 沙箱环境:OAuth域名
account-d.docusign.com,API主机https://demo.docusign.net/restapi - 生产环境:OAuth域名
account.docusign.com,API主机https://www.docusign.net/restapi
- 沙箱环境:OAuth域名
- 参数格式:
oauth_host_name必须是纯域名,不能包含https://或任何路径。 - JWT前置检查:确保已在DocuSign后台完成以下操作:
- 将应用的公钥上传至DocuSign开发者平台
- 为目标用户授予应用的JWT访问权限(完成“同意”步骤)
- 私钥正确性:确认使用的私钥与上传至DocuSign的公钥配对,文件路径无误。
内容的提问来源于stack exchange,提问作者amirmohamad
相关产品推荐
相关产品推荐

