正在做的項目為一個類似于代駕的項目
實在沒什么好總結的 項目大量使用騰訊云技術
我(wo)單抽出來一個身份/駕駛證(zheng)認證(zheng)技術模塊(人(ren)臉檢驗)
前面肯定會碰到很多問題 都一一總結
我就單抽出來一個比較困擾的問題:
地圖無法加載使用
真機調試 Error: 系統錯誤,錯誤碼:80082,get plugin(id: wx76a9a06e5b4e693e, version: 1.0.10) failed, permission deny [20250922 21:18:01][wxb35eca7bf02a0244]
比如想要得到小程序以上加載地圖插件
需要申請接口插件
想必你申請肯定會遇到很xx的問題:


參考:
我直接給出類似圖片 按照上述話術寫即可 大概率會通過(僅限于地圖申請接口)
然后回歸正題 無法加載是原項目未更新 早就迭代了
此版本不(bu)再適(shi)配 參考(kao)官方文檔//lbs.qq.com/miniProgram/demoCenter/wxGuide/plugin/citySelector
修改如下
再看 騰訊云的認證功能使用
1.首先申請接口
可以參考文檔快速(su)上手:
2.注入依賴
<dependency>
<groupId>com.tencentcloudapi</groupId>
<artifactId>tencentcloud-sdk-java</artifactId>
</dependency>
3.編寫使用
在開始編寫之前 我需要再次闡述一下項目結構 就當復習了 因為這個功能是抽出于一個項目中的

數據回顯 用VO包裝
例如:
@Data
public class IdCardOcrVo {
@Schema(description = "姓名")
private String name;
@Schema(description = "性別 1:男 2:女")
private String gender;
@Schema(description = "生日")
private Date birthday;
@Schema(description = "身份證號碼")
private String idcardNo;
@Schema(description = "身份證地址")
private String idcardAddress;
@Schema(description = "身份證有效期")
private Date idcardExpire;
@Schema(description = "身份證正面")
private String idcardFrontUrl;
@Schema(description = "身份證正面回顯")
private String idcardFrontShowUrl;
@Schema(description = "身份證背面")
private String idcardBackUrl;
@Schema(description = "身份證背面回顯")
private String idcardBackShowUrl;
}
service模塊
controller:
@Operation(summary = "身份證識別")
@PostMapping("/idCardOcr")
public Result<IdCardOcrVo> idCardOcr(@RequestPart("file") MultipartFile file) {
IdCardOcrVo idCardOcrVo = ocrService.idCardOcr(file);
return Result.ok(idCardOcrVo);
}
service:
IdCardOcrVo idCardOcr(MultipartFile file);
實現類參考官方(fang)給的文檔:
注意我上述標記 檢(jian)驗圖片是用字符串來檢(jian)驗的
Impl:
public IdCardOcrVo idCardOcr(MultipartFile file) {
//圖片轉換base64格式字符串
byte[] base64 = Base64.encodeBase64(file.getBytes());
String fileBase64 = new String(base64);
// 實例化一個認證對象,入參需要傳入騰訊云賬戶 SecretId 和 SecretKey,此處還需注意密鑰對的保密
Credential cred = new Credential(tencentCloudProperties.getSecretId(),
tencentCloudProperties.getSecretKey());
// 實例化一個http選項,可選的,沒有特殊需求可以跳過
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint("ocr.tencentcloudapi.com");
// 實例化一個client選項,可選的,沒有特殊需求可以跳過
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
// 實例化要請求產品的client對象,clientProfile是可選的
OcrClient client = new OcrClient(cred,tencentCloudProperties.getRegion(), clientProfile);
// 實例化一個請求對象,每個接口都會對應一個request對象
IDCardOCRRequest req = new IDCardOCRRequest();
//設置文件
req.setImageBase64(fileBase64);
// 返回的resp是一個IDCardOCRResponse的實例,與請求對象對應
IDCardOCRResponse resp = client.IDCardOCR(req);
//轉換為IdCardOcrVo對象
IdCardOcrVo idCardOcrVo = new IdCardOcrVo();
if (StringUtils.hasText(resp.getName())) {
//身份證正面
idCardOcrVo.setName(resp.getName());
idCardOcrVo.setGender("男".equals(resp.getSex()) ? "1" : "2");
idCardOcrVo.setBirthday(DateTimeFormat.forPattern("yyyy/MM/dd").parseDateTime(resp.getBirth()).toDate());
idCardOcrVo.setIdcardNo(resp.getIdNum());
idCardOcrVo.setIdcardAddress(resp.getAddress());
//上傳身份證正面圖片到騰訊云cos
CosUploadVo cosUploadVo = cosService.upload(file, "idCard");
idCardOcrVo.setIdcardFrontUrl(cosUploadVo.getUrl());
idCardOcrVo.setIdcardFrontShowUrl(cosUploadVo.getShowUrl());
} else {
//身份證反面
//證件有效期:"2010.07.21-2020.07.21"
String idcardExpireString = resp.getValidDate().split("-")[1];
idCardOcrVo.setIdcardExpire(DateTimeFormat.forPattern("yyyy.MM.dd").parseDateTime(idcardExpireString).toDate());
//上傳身份證反面圖片到騰訊云cos
CosUploadVo cosUploadVo = cosService.upload(file, "idCard");
idCardOcrVo.setIdcardBackUrl(cosUploadVo.getUrl());
idCardOcrVo.setIdcardBackShowUrl(cosUploadVo.getShowUrl());
}
return idCardOcrVo;}
基(ji)本沒啥可說(shuo)的 三件套走(zou) 照著(zhu)官網文檔(dang)即(ji)可
gateway模塊
@PostMapping(value = "/ocr/idCardOcr", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
Result<IdCardOcrVo> idCardOcr(@RequestPart("file") MultipartFile file);
web模塊
controller和service和service模塊一樣沒啥好說的
@Override
public IdCardOcrVo idCardOcr(MultipartFile file) {
Result<IdCardOcrVo> ocrVoResult = ocrFeignClient.idCardOcr(file);
IdCardOcrVo idCardOcrVo = ocrVoResult.getData();
return idCardOcrVo;
}
實現后檢驗:
在進行登錄的時候數據出現這個小問題:
com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed
MySQL 連接時常見的公鑰檢索問題
最新版mysql的版本問題 需要設置一些 在配置文件加入
useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC】
記(ji)得修改nacos上(shang)傳的配置文件







