Node.js编程实现DocuSign授权码流程遇问题求助
DocuSign开发问题及解决方案
问题描述
我是DocuSign新手,查阅文档后仍遇到两个问题:
- 使用TypeScript调用
getAuthorizationUri()生成的授权URL始终以accounts.docusign开头,但开发环境需使用account-d.docusign。 - 无法通过编程方式从授权URL中获取授权码,只能手动复制粘贴,希望实现
generateAccessToken()的自动化调用流程。
相关代码:
import { ApiClient } from 'docusign-esign' const apiClient = new ApiClient() const url: string = apiClient.getAuthorizationUri( config.docusign.INTERGRATION_KEY, ['signature'], 'http://localhost/', 'code', 'ready' ) console.log(url)
async getToken(authCode){ const token = await apiClient.generateAccessToken( INTERGRATION_KEY, SECRET_KEY, authCode ) console.log(token) return token }
解决方案
问题1:切换开发环境域名
生成授权URL前,需先为ApiClient设置沙箱环境的basePath,以此关联开发环境域名:
const apiClient = new ApiClient() // 指定沙箱环境的basePath apiClient.setBasePath('https://account-d.docusign.com/restapi') // 再生成授权URL const url: string = apiClient.getAuthorizationUri( config.docusign.INTERGRATION_KEY, ['signature'], 'http://localhost/', 'code', 'ready' ) console.log(url)
设置后,生成的授权URL会自动使用account-d.docusign作为域名前缀。
问题2:自动获取授权码并换取令牌
需搭建本地回调服务接收DocuSign返回的授权码,实现流程自动化:
- 用Express启动本地HTTP服务,监听回调地址:
import express from 'express' const app = express() app.get('/', async (req, res) => { // 从请求参数中提取授权码 const authCode = req.query.code as string // 调用getToken换取令牌 const token = await getToken(authCode) console.log('获取到令牌:', token) res.send('授权完成,令牌已获取') }) app.listen(80, () => { console.log('本地回调服务已启动,监听80端口') })
- 确保DocuSign应用配置的回调地址与本地服务地址一致(即
http://localhost/)。 - 用户访问生成的授权URL完成登录授权后,DocuSign会自动跳转到本地回调地址,服务通过
code参数拿到授权码,进而自动调用generateAccessToken()完成令牌换取。
内容的提问来源于stack exchange,提问作者Joel Gonzaga
相关产品推荐
相关产品推荐

