接口参考文档:java
ai.baidu.com/ai-doc/FACE…json
本文介绍了实名认证方案操做流程。小程序
本方案使用于在微信小程序、公众号、H5等业务场景实现用户实名认证,若是您的场景是安卓/IOS系统的app场景,推荐采用app端实名认证方案微信小程序
ai.baidu.com/ai-doc/FACE…微信
1、首先要建立一个百度云帐号,在产品服务里有人脸识别。app
2、参考人脸实名认证 >>> 方案概览 >>> H5实名认证,先建立应用,后建立方案。ide
3、建立应用获得 AppID、API Key和Secret Key ; 建立方案获得方案ID.net
4、获取Token,经过H5获取Token接口发起认证请求,获取verify_token信息blog
先经过第三步获得的API Key和Secret Key生成access_tokentoken
生成方法:
向受权服务地址发送请求(推荐使用POST)
aip.baidubce.com/oauth/2.0/t…
grant_type: 必须参数,固定为client_credentials;
client_id: 必须参数,应用的API Key;
client_secret: 必须参数,应用的Secret Key;
· 经过POST请求URL获取access_token示例:
https://aip.baidubce.com/oauth/2.0/token?grant_type=client_credentials&client_id=Va5yQRHlA4Fq5eR3LT0vuXV4&client_secret=0rDSjzQ20XUj5itV6WRtznPQSzr5pVw2&复制代码
· 经过Java获取access_token示例代码示例:
package com.baidu.ai.aip.auth; 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类 */public class AuthService { /** * 获取权限token * @return 返回示例: * { * "access_token": "24.460da4889caad24cccdb1fea17221975.2592000.1491995545.282335-1234567", * "expires_in": 2592000 * } */ public static String getAuth() { // 官网获取的 API Key 更新为你注册的 String clientId = "百度云应用的API Key"; // 官网获取的 Secret Key 更新为你注册的 String clientSecret = "百度云应用的Secret Key"; 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; } /** * 返回结果示例 */ System.err.println("result:" + result); 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; } public static void main(String[] args) { System.out.println("Access_token: " + getAuth()); } }复制代码
· 运行结果:获得Access_token
经过上述生成的access_token获取verify_token
· 咱们使用Postman 发送POST请求URL:
https://aip.baidubce.com/rpc/2.0/brain/solution/faceprint/verifyToken/generate?access_token=24.7f478f1f95d581d6f2f4006e0f904a95.2592000.1611283726.282336-23149109复制代码
URL中的信息填写以下所示:
(1)access_token:填写上面生成的access_token
(2)Body中放置请求参数 plan_id,即第三步获得的 方案ID值
(3)Header:application/json
5、跳转实名认证H5 URL,用户进行操做
使用上一步返回的 verify_token 信息请求认证H5页面,进行用户端流程操做。
· 认证URL:
https://brain.baidu.com/face/print/?token=xxx&successUrl=https://xxx&failedUrl=https://xxx复制代码
URL中的信息填写以下所示:
(1)token:填写verify_token。
(2)successUrl:请求成功跳转的网址,网址须要加http/https前缀
(3)failedUrl:请求失败跳转的网址,网址须要加http/https前缀
认证经过后咱们就可使用 verify_token 和第四步生成的 access_token 获取认证结果及资料,返回用户认证信息
6、查询认证结果接口
· 使用Postman 发送POST请求URL:
https://aip.baidubce.com/rpc/2.0/brain/solution/faceprint/result/detail?access_token=24.7f478f1f95d581d6f2f4006e0f904a95.2592000.1611283726.282336-23149109复制代码
URL中的信息填写以下所示:
(1)access_token:填写第四步生成的 access_token
(2)Body中放置请求参数verify_token,即第四步获取到的 verify_token
(3)Header:application/json
{ "verify_token" : "cIupeyP51sn28XzxGVTfYqoN"}复制代码
返回参数
· 返回结果
字段
必选
类型
说明
success
是
boolean
返回请求是否成功信息。若请求成功返回ture;请求失败则返回fault
result
是
array
请求结果
+idcard_ocr_result
否
array
返回采集的用户人脸信息当人脸实名认证控制台设置为使用OCR识别时返回此参数信息
++address
否
string
地址
++birthday
否
string
生日
++name
否
string
姓名
++id_card_number
否
string
身份证号
++gender
否
string
性别
++nation
否
string
民族
++expire_time
否
string
身份证失效日期
++issue_authority
否
string
身份证签发机关
++issue_time
否
string
身份证生效日期
+verify_result
是
array
认证返还信息
++liveness_score
是
string
活体检测分数
++score
是
string
人脸实名认证
++spoofing
是
string
合成图分数若未进行合成图检测,则返回0若进行活体检测,则返回合成图检测分值
+idcard_confirm
是
array
用户二次确认的身份证信息
++name
是
string
姓名
++idcard_number
是
string
身份证号
· 返回结果
{ "success": true, "result": { "idcard_ocr_result": { "address": "江苏省淮安市淮阴区XXX", "birthday": "19691211", "name": "孙XX", "id_card_number": "320821XXXXXXX", "gender": "女", "nation": "汉", "expire_time": "XXX", "issue_authority": "XXX", "issue_time": "XXX" }, "verify_result": { "liveness_score": 0.39, "score": 11.65885925 }, "idcard_confirm": { "name": "孙XX", "idcard_number": "320821XXXXXXX" } }, "log_id": "1436111694"}复制代码