应用鉴权流程

为了保证 JSSDK 的调用者是可信任的,同时对当前页面可用的 API 进行安全限制,防止恶意网页通过 JSAPI 随意获取用户私密信息,对用户财产造成损失。因此在部分 JSAPI 在被调用前,需要通过接口进行鉴权,只有鉴权成功的情况下,JSAPI 的调用才会正常生效。

流程图如下:

获取 h5Token

调用 getH5Token 接口获取 h5Token,详情请查看:getH5Token

获取 jsTicket

jsTicket 是 H5 应用用于调用 JSAPI 的临时票据。jsTicket 通过 H5Token 来获取 详情请查看:getJsTicket

用步骤一拿到的 H5Token 采用 http GET 方式请求获得 jsTicket(临时票据)详情请查看:JSAPI 临时授权凭证

获得 jsTicket 之后,就可以生成 JSSDK 权限验证的签名了。

计算签名

(1)签名为服务端根据应用 ID:appId,一次性令牌:jsTicket,当前时间戳:jsTimestamp 按照参数名的字典序排序(即 Java 中的 TreeMap 排序);

(2)将排序后的参数键值对用&拼接,即拼接成 key1=val1&key2=val2&…,假设这个值为 paramsString;

(3)将步骤(2)得到的字符串 paramsString 使用小程序秘钥 appSecret 进行签名算法加密后,即为签名 jsSignature 的值。用伪代码表示即

// 签名过程伪代码
jsSignature = HMAC-SHA1(paramsString, appSecret).toUpperCase();

下面演示一个签名计算实例

appSecret: c840c988e29aac9aedd2c15d3298d2e7658d9d5f

假设本次加密的参数如下:

appId: 92a56f1f
jsTicket: a692a3deab2b52d0d523b117fdbc2aba4cea10b01ddd198b593c818e2afe9f0337856bd6
jsTimestamp: 1648621598393

(1)将以上参数进行字典序排序得到拼接的字符串

appId=92a56f1f&jsTicket=d7cd4ec97db43d9ed922945c920ba8e213f6fcf1fdd39204fd42ff77eb792fa56811d01d&jsTimestamp=1648621705350

(2)将以上参数进行HMAC-SHA1算法加密得到加密串并转为全部大写,得到jsSignature的值为

D96FB9535418AF8FD9008F19BD654AEC62AAE7E7

提示:可以通过 HMAC 在线签名工具 调试和验证签名算法的结果。

配置网页应用安全域名

打开开发者平台设置 进入H5应用->开发设置->安全域名配置

进入左侧开发设置修改安全域名

调用 ok.config 接口鉴权

window.ok.config({
appId: '92a56f1f', // 必填,应用ID
jsTimestamp: 1648621705350, // 必填,生成签名的时间戳,毫秒级
jsTicket: 'd7cd4ec97db43d9ed922945c920ba8e213f6fcf1fdd39204fd42ff77eb792fa56811d01d', // 必填,生成签名的时间戳,毫秒级
jsSignature: 'D96FB9535418AF8FD9008F19BD654AEC62AAE7E7', // 必填,签名
});
  1. 1. 应用鉴权流程
    1. 1.1. 获取 h5Token
    2. 1.2. 获取 jsTicket
    3. 1.3. 计算签名
    4. 1.4. 配置网页应用安全域名
    5. 1.5. 调用 ok.config 接口鉴权