钉钉第三方个人应用身份验证

后端使用nodejs开发,node版本v10.16.0。

废话不多说直接上干货~~~~~~

首先看一下钉钉官方文档中的钉钉签名例子:

    • timestamp=1546084445901
    • appSecret=testappSecret
    • signature=HCbG3xNE3vzhO+u7qCUL1jS5hsu2n5r2cFhnTrtyDAE=
    • urlEncode后的signature=HCbG3xNE3vzhO%2Bu7qCUL1jS5hsu2n5r2cFhnTrtyDAE%3D

现在要做的就是根据钉钉官方给出的例子,加密之后能够匹配的上。

在上代码之前,需要引入的包文件:

1、crypto包:用于加密签名,我用的版本是:1.0.1

2、urlencode包:用于转换密文,我用的版本:1.1.0

下方是代码段:

 
 
const crypto = require('crypto');
const urlencode = require('urlencode');

//
这个是请求钉钉签名接口的参数 let requestData = { tmp_auth_code:code }; //官方例子中的时间戳 let timestamp="1546084445901"; //官方例子中的appSecret码 let appSecret="testappSecret"; //设置appSecret为"sha256"加密的密钥 let hash_256 = crypto.createHmac("sha256",appSecret); //对时间戳进行加密,并使用“base64”输出 let signature = hash_256.update(new Buffer(timestamp).toString("utf8"),'utf8').digest("base64"); console.log("加密结果:",signature); //对加密密文进行urlEncode转化【之所以对密文要转换,是担心密文中有非法字符】 let urlSignature =urlencode(signature); console.log("urlencode转换:",urlSignature);

到这里,对官方给出的示例进行签名加密就结束了。加密的结果和官方示例中是一样的。

猜你喜欢

转载自www.cnblogs.com/shendaxian/p/12580193.html