Docusignapi 使用服务身份验证时出现错误消息无效授权

Docusignapi 使用服务身份验证时出现错误消息无效授权,docusignapi,Docusignapi,试图用代码交换访问令牌时出错。声明授予无效。我不知道我做错了什么 代码如下: var integratorId = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'; var secretKey = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx'; var basic = base64.encode(integratorId + ':' + secretKey); console.log(basic); var JWTheader

试图用代码交换访问令牌时出错。声明授予无效。我不知道我做错了什么

代码如下:

var integratorId = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';
var secretKey = 'xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx';

var basic = base64.encode(integratorId + ':' + secretKey);

console.log(basic);

var JWTheader = {"typ":"JWT", "alg":"RS256"};
var JWTbody = {
                "iss":"bfcb8406-4994-4715-8f6d-112f5670db2d",
                "sub":"832f391a-a3f7-4c29-b8f0-3226c06accd2",
                "aud": "account-d.docusign.com",
                "scope": "signature"

                };



var unSignedToken = base64.encode(JWTheader) + '.' +  base64.encode(JWTbody);
var cert = fs.readFileSync('/home/toplevelstaging/TopLevelAPI/routes/fs_node/RSAkey.pem');
var token = jwt.sign({unSignedToken, iat:Math.floor(Date.now()/100),exp:Math.floor(Date.now()/1000)+60}, cert, {algorithm:'RS256'});


var baseUrl = 'https://demo.docusign.net/restapi/v2/accounts/3465212';


var oauth = 'https://account-d.docusign.com/oauth/token';


var tokenUrl = 'grant_type=urn:ietf:params:oauth:grant-type:jwt-bearer&assertion='+token;




request({
    headers:{"Content-Type":"application/x-www-form-urlencoded","Authorization":"Basic "+basic},
    url:oauth,
    json: true, 
    method: "POST",
    data: tokenUrl,
    },function(err,response,body){
        console.log(response);
    }
);
以下是我收到的错误:

 body: { error: 'invalid_grant' } }

您正在使用哪个JWT库

JWT库应该负责为您创建JWT,您不应该处理令牌部分的base64编码

从您的示例中可以看出,您正在手动滚动JWT的部分,然后使用库进行签名


寻找一个更好的图书馆,为你处理一切。有关更多提示,请参阅我的和配方。

integratorId和SecretKey应该是私有的,只有您可以访问它们。它们不应该像这样发布在公共论坛上。我正在为node.js使用jsonwebtoken,我取消了base64编码,但仍然得到相同的错误。