接口參考文檔: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"}複製代碼