調用騰訊雲人臉識別

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);

注:各個接口參數調用信息都是參考騰訊雲接口文檔可自行參考

https://cloud.tencent.com/document/product/1007/37305

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章