有奖捉虫:办公协同&微信生态&物联网文档专题 HOT

前置条件

请合作方确保 NONCE ticket 已经正常获取,获取方式见 NONCE ticket 获取
NONCE 类型的 ticket,其有效期为120秒,且一次性有效,即每次登录 h5 刷脸都要重新请求 NONCE ticket,重新算 sign。同时建议合作方做前端保护,防止用户连续点击,短时间内频繁登录 h5 刷脸。
人脸识别需要录制视频,因此要求浏览器支持视频录制功能。 适用浏览器及版本如下:
Firefox 浏览器29及以上版本。
Chrome 浏览器53及以上版本。

生成签名

准备步骤

合作方根据本次人脸验证的如下参数生成签名,需要签名的参数信息如下:
参与签名的数据需要和使用该签名的接口中的请求参数保持一致。
参数
说明
来源
WBappid
业务流程唯一标识
参考 获取 WBappid 指引在人脸核身控制台内申请
orderNo
订单号,字母/数字组成的字符串,本次人脸验证合作伙伴上送的订单号,唯一标识
合作方自行分配,不要带有特殊字符
userId
用户 ID ,用户的唯一标识(不要带有特殊字符)
合作方自行分配(与接口中使用的 userId 一致,不要带有特殊字符)
version
参数值为:1.0.0
-
h5faceId
h5/geth5faceid 接口返回的唯一标识
-
ticket
合作伙伴服务端实时获取的 ticket,注意是 NONCE 类型
获取方式见 NONCE ticket 获取(所用的 userId 参数值需要和接口里面的 userId 值保持一致)
nonce
随机数:32位随机串(字母+数字组成的随机数)
合作方自行生成(与接口中的随机数保持一致,不要带有特殊字符)

基本步骤

1. 生成一个32位的随机字符串(字母和数字)nonce(接口请求时也要用到)。
2. 将 WBappid、userId、orderNo、version、h5faceId 连同 ticket、nonce 共7个参数的值进行字典序排序。
3. 将排序后的所有参数字符串拼接成一个字符串。
4. 将排序后的字符串进行 SHA1 编码,编码后的40位字符串作为签名(sign)。
注意
签名算法可参考 签名算法说明

参考示例

请求参数:
参数名
参数值
WBappid
appId001
userId
userID19959248596551
nonce
kHoSxvLZGxSoFsjxlbzEoUzh5PAnTU7T
version
1.0.0
h5faceId
bwiwe1457895464
orderNo
aabc1457895464
ticket
zxc9Qfxlti9iTVgHAjwvJdAZKN3nMuUhrsPdPlPVKlcyS50N6tlLnfuFBPIucaMS
字典排序后的参数为:
[1.0.0, aabc1457895464, appId001, bwiwe1457895464, kHoSxvLZGxSoFsjxlbzEoUzh5PAnTU7T, userID19959248596551, zxc9Qfxlti9iTVgHAjwvJdAZKN3nMuUhrsPdPlPVKlcyS50N6tlLnfuFBPIucaMS]
拼接后的字符串为:
1.0.0aabc1457895464appId001bwiwe1457895464kHoSxvLZGxSoFsjxlbzEoUzh5PAnTU7TuserID19959248596551zxc9Qfxlti9iTVgHAjwvJdAZKN3nMuUhrsPdPlPVKlcyS50N6tlLnfuFBPIucaMS
计算 SHA1 得到签名: 该字符串就是最终生成的签名(40位),不区分大小写。
4E9DFABF938BF37BDB7A7DC25CCA1233D12D986B

启动 H5 人脸核身

合作方后台上送 h5faceId 以及 sign,后台校验 sign 通过之后重定向到 H5 人脸核身。 为了保证服务的高可用,全面消除单点风险,我们启用了多域名服务。启动 H5 人脸核身需要使用 合作方后台上送身份信息 接口返回内容中 optimalDomain 字段域名。 请求 URL:https://{optimalDomain}/api/pc/login
注意
optimalDomain 使用 合作方后台上送身份信息 接口返回的 optimalDomain 域名,如果 optimalDomain 字段返回为空或者取不到,默认使用域名 miniprogram-kyc.tencentcloudapi.com。
该跳转 url 不能直接暴露在前端 html 页面的<a>标签中。某些浏览器会预加载<a>标签中的 url,导致用户点击访问该 url 时,因 url 已经被预加载访问过,于是签名失效,页面报错“签名不合法”。
请求方法:GET 请求参数:
参数
说明
类型
长度
是否必填
appId
业务流程唯一标识,即 WBappid,可参考 获取 WBappid 指引在人脸核身控制台内申请
String
8
version
接口版本号,默认参数值:1.0.0
String
20
nonce
随机数:32位随机串(字母+数字组成的随机数)
String
32
orderNo
订单号,字母/数字组成的字符串,由合作方上送,每次唯一,此信息为本次人脸验证上送的信息,不能超过32位
String
32
h5faceId
h5/geth5faceid 接口返回的唯一标识
String
32
url
H5 人脸验证完成后回调的第三方 URL,需要第三方提供完整 URL 且做 URL Encode。完整 URL Encode 示例,原 URL:https://cloud.tencent.com,Encode 后:https%3a%2f%2fcloud.tencent.com
String
-
userId
用户 ID ,用户的唯一标识(不要带有特殊字符)
String
-
sign
签名:使用上面生成的签名
String
40
请求示例:
https://miniprogram-kyc.tencentcloudapi.com/api/pc/login?appId=appId001
&version=1.0.0
&nonce=4bu6a5nv9t678m2t9je5819q46y9hf93
&orderNo=161709188560917432576916585
&h5faceId=wb04f10695c3651ce155fea7070b74c9
&url=https%3a%2f%2fcloud.tencent.com
&userId=23333333333333
&sign=5DD4184F4FB26B7B9F6DC3D7D2AB3319E5F7415F