iOS调用DocuSign获取Access Token API报错:需code challenge及方法
解决iOS调用DocuSign获取Access Token时的"code challenge and code challenge method required"错误
这个错误是因为DocuSign强制移动端使用PKCE(Proof Key for Code Exchange)流程,按以下步骤检查修正即可:
生成合规的code verifier
必须生成一个43-128字符的随机字符串,仅包含字母、数字、-._~这几个字符。可以用iOS的SecRandomCopyBytes生成随机数据,再转成Base64URL格式(去掉末尾的=,把+替换成-,/替换成_)。生成对应的code challenge
对code verifier做SHA-256哈希,再把哈希结果转成Base64URL编码(同样处理=、+、/)。此时code_challenge_method要设为S256,这是DocuSign强制要求的方式,不要用plain模式。授权请求(获取code的步骤)必须带两个参数
向DocuSign发起授权请求时,参数里必须加上code_challenge(上述生成的哈希编码值)和code_challenge_method=S256,这一步漏了就会触发后续的token报错。获取token的请求必须带code_verifier
拿到授权code后调用token接口时,除了常规的grant_type=authorization_code、code=你的授权码、client_id=你的应用ID、redirect_uri=你的回调地址,必须额外加上code_verifier参数,值就是最开始生成的那个随机字符串,要和授权请求时的完全一致。排查易踩坑点:
- code verifier长度必须在43-128字符之间,不符合直接报错
- 一定要用Base64URL编码,别用普通Base64,否则哈希匹配不上
- 授权和token请求用的code verifier必须完全相同,中间不能修改
- 确认DocuSign后台你的应用类型是移动应用,web应用的配置不适用移动端PKCE要求
内容的提问来源于stack exchange,提问作者chungphanngoc
相关产品推荐
相关产品推荐

