中文字幕精品亚洲无线码二区,国产黄a三级三级三级看三级,亚洲七七久久桃花影院,丰满少妇被猛烈进入,国产小视频在线观看网站

記錄(lu)--Uni-app接入騰訊(xun)人臉(lian)核身

這里給大家分享我在(zai)網上(shang)總(zong)結出來(lai)的一些知識,希(xi)望對大家有(you)所幫(bang)助

人臉核身功能有多種(zhong)接入方式(shi),其中(zhong)包含(han)微(wei)信H5、微(wei)信小程序(xu)、APP、獨立H5、PC端、API接入6種(zhong)方式(shi)。

? 我們的(de)(de)產品是使用uni-app來(lai)開發,所(suo)以(yi)第一時間考(kao)慮使用H5方(fang)(fang)式(shi)接(jie)入(ru),但是通過(guo)與官(guan)方(fang)(fang)技術人員對接(jie)后得知(zhi),uni-app是有原生(sheng)(sheng)插件可(ke)以(yi)用的(de)(de),所(suo)以(yi)可(ke)以(yi)使用app的(de)(de)方(fang)(fang)式(shi)接(jie)入(ru),原生(sheng)(sheng)的(de)(de)插件方(fang)(fang)式(shi)接(jie)入(ru)會讓用戶體驗(yan)更好,所(suo)以(yi)本文也是圍繞著APP原生(sheng)(sheng)插件的(de)(de)方(fang)(fang)式(shi)接(jie)入(ru)。

準備工作
首(shou)先需要申請(qing)服務,此服務并不是直接購買,而(er)是需要提交申請(qing),通過人工審核后才可以(yi)使用(申請(qing)鏈(lian)接)

申請通(tong)過后,在控制臺(tai)創建應用,如(ru)圖

添加官方技(ji)術(shu)人員微信(xin)(vx:faceid001),索要license,后面需要用(yong)到

uni-app插件市場(chang)添(tian)加人臉核身(DC-WBOCRService)和ocr識別插件(DC-WBOCRService)

至此,前期接入準備(bei)工作已經(jing)完成。

接入步驟
獲取AccessToken(官方文檔)
接口(kou)地址://idasc.webank.com/api/oauth2/access_token

參數:

app_id: _this.app_id,
secret: _this.secret,
grant_type: 'client_credential',
version: '1.0.0'

請求代碼:

    uni.request({
				url: '//idasc.webank.com/api/oauth2/access_token',
				data: {
					app_id: _this.app_id,
					secret: _this.secret,
					grant_type: 'client_credential',
					version: '1.0.0'
				},
				success(res) {
					_this.access_token = res.data.access_token;
					console.log(res.data);
					console.log('access_token:' + _this.access_token);
				},
				fail(e) {
					console.log(e);
				},
				complete() {
				}
			});

此處(chu)的(de)grant_type和version為固定參數

響應結果:

{
	"code":"0","msg":"請求成功",
	"transactionTime":"20151022043831",
	"access_token":"accessToken_string",
	"expire_time":"20151022043831",
	"expire_in":"7200"
}
獲取NONCE ticket()

接口地址://idasc.webank.com/api/oauth2/api_ticket

參數:

app_id: _this.app_id,
access_token: _this.access_token,
type: 'NONCE',
version: _this.version,
user_id: _this.userId

請求代碼:

         uni.request({
				url: '//idasc.webank.com/api/oauth2/api_ticket',
				data: {
					app_id: _this.app_id,
					access_token: _this.access_token,
					type: 'NONCE',
					version: _this.version,
					user_id: _this.userId
				},
				success(res) {
					_this.showToast(res.data);
					_this.ticket = res.data.tickets[0].value;
					console.log('ticket:' + _this.ticket);
				},
				fail(e) {
					console.log(e);
					_this.showToast(e.code);
				},
				complete() {
					uni.hideLoading();
				}
			});
    

響應結果(guo):

{
    "code": "0",
    "msg": "請求成功",
    "transactionTime": "20151022044027",
    "tickets": [{
        "value": "ticket_string",
        "expire_in": "120",
        "expire_time": "20151022044027"
    }]
}

獲取簽名(官方文檔)
從文檔上來看是需(xu)要(yao)將wbappid userId nonceStr version ticket放在(zai)數組中進(jin)行排序(xu),然后使用sha1算法進(jin)行加密得到一(yi)串40位的簽(qian)名。

我(wo)從本地(di)使用sha1庫進(jin)行加(jia)密(mi)(mi),然而返回結果一(yi)直報錯,通過與官方技術人員溝通得知此步驟加(jia)密(mi)(mi)必須在(zai)服務端進(jin)行,所以下(xia)方列出java和php的加(jia)密(mi)(mi)代碼

Java:

public static String sign(List<String> values, String ticket) {
    if (values == null) {
        throw new NullPointerException("values is null");
    }
    values.removeAll(Collections.singleton(null));// remove null
    values.add(ticket);
    java.util.Collections.sort(values);

    StringBuilder sb = new StringBuilder();
    for (String s : values) {
        sb.append(s);
    }
    return Hashing.sha1().hashString(sb, Charsets.UTF_8).toString().toUpperCase();
}

PHP:

<?php

$arr_test =
    array('TIDApint','kHoSxvLZGxSoFsjxlbzEoUzh5PAnTU7T','xxx','xxxxxxxx','kHoSxvLZGxSoFsjxlbzEoUzh5PAnTU7T','1.0.0','jMgg28AVjLmmzUUU5bFS4jhhpzi9HUbp8ggtvGyAIIsn8aedN68xs88GYxvnEjp6');

print_r('</br>');
print_r('參加字典排序的參數為   ');
print_r($arr_test);

$arr_test = array_values($arr_test);
asort($arr_test);
$arr_test =implode('',$arr_test);


print_r('</br>');
print_r('字典排序為   ');
print_r($arr_test);


$sign = sha1($arr_test);
print_r('</br>');
print_r('簽名值為  ');
print_r($sign);

?>

注意:這一步必須(xu)在服務端進行處理

獲取FaceId()

請求地址://idasc.webank.com/api/server/getfaceid

參數:

webankAppId: _this.app_id,
orderNo: _this.orderNo, //訂單號,由合作方上送,每次唯一,不能超過32位
name: _this.idCardInfo.name, //姓名
idNo: _this.idCardInfo.cardNum, //證件號碼
userId: _this.userId, //用戶 ID ,用戶的唯一標識(不能帶有特殊字符)
sourcePhotoStr: '', //比對源照片,注意:原始圖片不能超過500KB,且必須為 JPG 或 PNG 格式;參數有值:使合作伙伴提供的比對源照片進行比對,必須注照片是正臉可信照片,照片質量由合作方保證;參數為空 :根據身份證號+姓名使用權威數據源比對
sourcePhotoType: '2', //比對源照片類型,注意: 如合作方上送比對源則必傳,使用權威數據源可不傳;參數值為1:水紋正臉照;參數值為2:高清正臉照
version: _this.version, //默認參數值為:1.0.0
sign: _this.sign //簽名:使用上文 生成的簽名

請求代碼:

uni.request({
				url: '//idasc.webank.com/api/server/getfaceid',
				method: 'POST',
				data: {
					webankAppId: _this.app_id,
					orderNo: _this.orderNo, //訂單號,由合作方上送,每次唯一,不能超過32位
					name: _this.idCardInfo.name, //姓名
					idNo: _this.idCardInfo.cardNum, //證件號碼
					userId: _this.userId, //用戶 ID ,用戶的唯一標識(不能帶有特殊字符)
					sourcePhotoStr: '', //比對源照片,注意:原始圖片不能超過500KB,且必須為 JPG 或 PNG 格式;參數有值:使合作伙伴提供的比對源照片進行比對,必須注照片是正臉可信照片,照片質量由合作方保證;參數為空 :根據身份證號+姓名使用權威數據源比對
					sourcePhotoType: '2', //比對源照片類型,注意: 如合作方上送比對源則必傳,使用權威數據源可不傳;參數值為1:水紋正臉照;參數值為2:高清正臉照
					version: _this.version, //默認參數值為:1.0.0
					sign: _this.sign //簽名:使用上文 生成的簽名
				},
				success(res) {
					_this.faceId = res.data.result.faceId;
					console.log(res.data);
				},
				fail(e) {
					console.log(e);
				},
				complete() {}
			});

響應結果:

{
"code": 0,
"msg": "成功",
"result": {
     "bizSeqNo":"業務流水號",
     "orderNo":"合作方訂單號",
     "faceId":"cc1184c3995c71a731357f9812aab988"
    }
}

通過上面(mian)4個步驟已經(jing)獲取(qu)到了我們需(xu)要的所有參數,接下(xia)來就可(ke)以調(diao)用(yong)原生插件(jian)來實現人臉認證了。

uni-app中調用人臉核身插件進行人臉認證
const face = uni.requireNativePlugin('DC-WBFaceService');
			face.startWbFaceVerifyService(
				{
					userId: this.userId,
					nonce: this.nonceStr,
					sign: this.sign,
					appId: this.app_id,
					orderNo: this.orderNo,
					apiVersion: this.version,
					licence: this.licence,
					faceType: '1',
					compareType: '0',
					faceId: this.faceId,
					sdkConfig: {
						//Android和iOS共有的配置參數
						showSuccessPage: true, //是否展示成功頁面
						showFailurePage: true, //是否展示失敗頁面
						recordVideo: true, //是否錄制視頻
						playVoice: true, //是否播放語音提示
						detectCloseEyes: true, //是否檢測用戶閉眼
						theme: '1', //sdk皮膚設置,0黑色,1白色
						//android獨有的配置參數
						isEnableLog: true, //是否打開刷臉native日志,請release版本關閉!!!

						//iOS獨有的配置參數
						windowLevel: '1', //sdk中拉起人臉活體識別界面中使用UIWindow時的windowLevel配置
						manualCookie: true //是否由SDK內部處理sdk網絡請求的cookie
					}
				},
				result => {
					console.log('【uni log】face SDK callback ================> result.');
					console.log(result);
				}
			);

到這一步,就可(ke)以實現人臉(lian)核身了。

本文轉載(zai)于:

//blog.csdn.net/u011511921/article/details/106951123/

如果對您有所幫助,歡迎您點個關注,我會定時更新技術文檔,大家一起討論學習,一起進步。

 

posted @ 2024-01-30 18:08  林恒  閱讀(412)  評論(0)    收藏  舉報