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

青春壹個敷衍的年華 提交于 2020-03-27 12:08:26

后端使用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);

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

标签
易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!