1. 获取token

package org.fh.util;

import org.json.jsonobject;

import java.io.bufferedreader;
import java.io.inputstreamreader;
import java.net.httpurlconnection;
import java.net.url;
import java.util.list;
import java.util.map;

/**
 * 说明:获取百度人脸识别token类
 * 作者:f-h
 * from:www.fhadmin.cn
 */
public class authservice {
    
    /**
     * 获取权限token
     * @return 返回示例:
     * {
     * "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567",
     * "expires_in": 2592000
     * }
     */
    public static string getauth() {
        // 官网获取的 api key 更新为你注册的
        string clientid = "xxxx";
        // 官网获取的 secret key 更新为你注册的
        string clientsecret = "ssss";
        return getauth(clientid, clientsecret);
    }

    /**
     * 获取api访问token
     * 该token有一定的有效期,需要自行管理,当失效时需重新获取.
     * @param ak - 百度云官网获取的 api key
     * @param sk - 百度云官网获取的 securet key
     * @return assess_token 示例:
     * "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567"
     */
    public static string getauth(string ak, string sk) {
        // 获取token地址
        string authhost = "https://aip.baidubce.com/oauth/2.0/token?";
        string getaccesstokenurl = authhost
                // 1. grant_type为固定参数
                + "grant_type=client_credentials"
                // 2. 官网获取的 api key
                + "&client_id=" + ak
                // 3. 官网获取的 secret key
                + "&client_secret=" + sk;
        try {
            url realurl = new url(getaccesstokenurl);
            // 打开和url之间的连接
            httpurlconnection connection = (httpurlconnection) realurl.openconnection();
            connection.setrequestmethod("get");
            connection.connect();
            // 获取所有响应头字段
            map<string, list<string>> map = connection.getheaderfields();
            // 遍历所有的响应头字段
            for (string key : map.keyset()) {
                system.err.println(key + "--->" + map.get(key));
            }
            // 定义 bufferedreader输入流来读取url的响应
            bufferedreader in = new bufferedreader(new inputstreamreader(connection.getinputstream()));
            string result = "";
            string line;
            while ((line = in.readline()) != null) {
                result += line;
            }
            /**
             * 返回结果示例
             */
            jsonobject jsonobject = new jsonobject(result);
            string access_token = jsonobject.getstring("access_token");
            return access_token;
        } catch (exception e) {
            system.err.printf("获取token失败!");
            e.printstacktrace(system.err);
        }
        return null;
    }

}

 

2.人脸对比

package org.fh.util;

import java.util.*;

import net.sf.json.jsonobject;

/**
 * 说明:人脸对比
 * 作者:f-h
 * from:www.fhadmin.cn
 */
public class facematch {

    public static string facematch(list<object> list) {
        // 请求url
        string url = "https://aip.baidubce.com/rest/2.0/face/v3/match";
        try {
            string param = gsonutils.tojson(list);
            // 注意这里仅为了简化编码每一次请求都去获取access_token,线上环境access_token有过期时间, 客户端可自行缓存,过期后重新获取。
            string accesstoken = authservice.getauth();
            string result = httputil.post(url, accesstoken, "application/json", param);
            return result;
        } catch (exception e) {
            e.printstacktrace();
        }
        return null;
    }

    //photodata1 图片1的 base64码
    //photodata2 图片2的 base64码 返回的score大于80 说明是同一个人
    public static string getscore(string photodata1,string photodata2) {
        list<object> list = new arraylist<object>();
        map<string,string> map1 = new hashmap<string,string>();
        map1.put("image", photodata1);
        map1.put("image_type", "base64");
        map1.put("face_type", "live");
        map1.put("quality_control", "none");
        map1.put("liveness_control", "none");
        list.add(map1);
        map<string,string> map2 = new hashmap<string,string>();
        map2.put("image", photodata2);
        map2.put("image_type", "base64");
        map2.put("face_type", "live");
        map2.put("quality_control", "none");
        map2.put("liveness_control", "none");
        list.add(map2);
        string resultstr = facematch.facematch(list);
        jsonobject jsonmsg = jsonobject.fromobject(resultstr);
        string error_msg = jsonmsg.getstring("error_msg");
        string score = "0";
        if("success".equals(error_msg)) {
            string result = jsonmsg.getstring("result");
            jsonobject jsonresult = jsonobject.fromobject(result);
            score = jsonresult.getstring("score");
        }
        return score;
    }
    
}