1、先獲取faceid
獲取faceID需要有webankAppId(騰訊雲APPID)、orderNo(可使用時間戳隨機生成)、name、idNo、userId(這個隨意只要是唯一標識就可以)、version(版本)、sign(獲取sign前要獲取access_token和signticket)
a、獲取token
String requestUrl = "https://idasc.webank.com/api/oauth2/access_token?app_id=" + face_appid + "&secret=" + face_appsercet + "&grant_type=client_credential&version=1.0.0";
String responseStr = HttpUtil.get(requestUrl, 10000);
b、獲取SignTicket
String requestUrl = "https://idasc.webank.com/api/oauth2/api_ticket?app_id=" + face_appid + "&access_token=" + face_token + "&type=SIGN&version=1.0.0";
String responseStr = HttpUtil.get(requestUrl, 10000);
c、獲取sign
需要list集合與signticket(批處理獲取,不然每個人獲取一次就會導致前人獲取的失效)
List<String> list = new ArrayList<String>();
list.add(face_appid);
list.add(orderNo());
list.add(name());
list.add(idNo());
list.add(openid());
list.add(version);
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);
}
System.out.println("排序後數據" + sb);
return Hashing.sha1().hashString(sb, Charsets.UTF_8).toString().toUpperCase();
}
獲取人臉識別id
Map<String, String> map = new HashMap<String, String>();
map.put("webankAppId", face_appid);
map.put("orderNo", orderNo);
map.put("name", name);
map.put("idNo", idNo);
map.put("userId", userid);
map.put("version", version);
map.put("sign", sign);
String prem = JacksonUtil.objectToJackson(map);
logger.info("人臉識別參數【{}】", prem);
String responseStr = HttpUtil.post("https://idasc.webank.com/api/server/h5/geth5faceid", prem);
2、獲取nonceTicket
String responseStr = HttpUtil.get(https://idasc.webank.com/api/oauth2/api_ticket?app_id=face_appid+"&access_token="+face_token+"&type=NONCE&version=1.0.0&user_id="+userid, 10000);
3、獲取調起sign
List<String> list = new ArrayList<String>();
list.add(face_appid);
list.add(userID);
list.add(nonce);
list.add(orderNo);
list.add(version);
list.add(faceId);
//ticket爲noceticket,userid那個唯一標識
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);
}
System.out.println("排序後數據" + sb);
return Hashing.sha1().hashString(sb, Charsets.UTF_8).toString().toUpperCase();
}
4、調起人臉識別
sign第二次獲取的那個、URL識別成功跳轉路徑、userId唯一標識
參數:userId、idNo、nonce、orderNo、sign、h5faceId、version、webankAppId、url、from
前端根據參數調起(循環遍歷賦值)這裏開始進進入騰訊雲頁面
$.each(data.object, function (key, value) {
if (key != "result" && key != "message") {
var temp = "<input type='hidden' name='" + key + "' value='" + value + "' />";
payFormHtml += temp;
}
});
$('body').append('<form id="faceFrom" action="https://ida.webank.com/api/web/login"></form>');
$("#faceFrom").append(payFormHtml);
注:各個接口參數調用信息都是參考騰訊雲接口文檔可自行參考