正在做的項(xiàng)目為一個(gè)類似于代駕的項(xiàng)目
實(shí)在沒(méi)什么好總結(jié)的 項(xiàng)目大量使用騰訊云技術(shù)
我單抽出來(lái)一個(gè)身份/駕駛證認(rèn)證技術(shù)模塊(人臉檢驗(yàn))
前面肯定會(huì)碰到很多問(wèn)題 都一一總結(jié)
我就單抽出來(lái)一個(gè)比較困擾的問(wèn)題:
地圖無(wú)法加載使用
真機(jī)調(diào)試 Error: 系統(tǒng)錯(cuò)誤,錯(cuò)誤碼:80082,get plugin(id: wx76a9a06e5b4e693e, version: 1.0.10) failed, permission deny [20250922 21:18:01][wxb35eca7bf02a0244]
比如想要得到小程序以上加載地圖插件
需要申請(qǐng)接口插件
想必你申請(qǐng)肯定會(huì)遇到很xx的問(wèn)題:


參考:https://zhuanlan.zhihu.com/p/576989072
我直接給出類似圖片 按照上述話術(shù)寫即可 大概率會(huì)通過(guò)(僅限于地圖申請(qǐng)接口)
然后回歸正題 無(wú)法加載是原項(xiàng)目未更新 早就迭代了
此版本不再適配 參考官方文檔https://lbs.qq.com/miniProgram/demoCenter/wxGuide/plugin/citySelector
修改如下
再看 騰訊云的認(rèn)證功能使用
1.首先申請(qǐng)接口
可以參考文檔快速上手:https://cloud.tencent.com/document/product/866/34681
2.注入依賴
<dependency>
<groupId>com.tencentcloudapi</groupId>
<artifactId>tencentcloud-sdk-java</artifactId>
</dependency>
3.編寫使用
在開(kāi)始編寫之前 我需要再次闡述一下項(xiàng)目結(jié)構(gòu) 就當(dāng)復(fù)習(xí)了 因?yàn)檫@個(gè)功能是抽出于一個(gè)項(xiàng)目中的

數(shù)據(jù)回顯 用VO包裝
例如:
@Data
public class IdCardOcrVo {
@Schema(description = "姓名")
private String name;
@Schema(description = "性別 1:男 2:女")
private String gender;
@Schema(description = "生日")
private Date birthday;
@Schema(description = "身份證號(hào)碼")
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 = "身份證識(shí)別")
@PostMapping("/idCardOcr")
public Result<IdCardOcrVo> idCardOcr(@RequestPart("file") MultipartFile file) {
IdCardOcrVo idCardOcrVo = ocrService.idCardOcr(file);
return Result.ok(idCardOcrVo);
}
service:
IdCardOcrVo idCardOcr(MultipartFile file);
實(shí)現(xiàn)類參考官方給的文檔:
注意我上述標(biāo)記 檢驗(yàn)圖片是用字符串來(lái)檢驗(yàn)的
Impl:
public IdCardOcrVo idCardOcr(MultipartFile file) {
//圖片轉(zhuǎn)換base64格式字符串
byte[] base64 = Base64.encodeBase64(file.getBytes());
String fileBase64 = new String(base64);
// 實(shí)例化一個(gè)認(rèn)證對(duì)象,入?yún)⑿枰獋魅腧v訊云賬戶 SecretId 和 SecretKey,此處還需注意密鑰對(duì)的保密
Credential cred = new Credential(tencentCloudProperties.getSecretId(),
tencentCloudProperties.getSecretKey());
// 實(shí)例化一個(gè)http選項(xiàng),可選的,沒(méi)有特殊需求可以跳過(guò)
HttpProfile httpProfile = new HttpProfile();
httpProfile.setEndpoint("ocr.tencentcloudapi.com");
// 實(shí)例化一個(gè)client選項(xiàng),可選的,沒(méi)有特殊需求可以跳過(guò)
ClientProfile clientProfile = new ClientProfile();
clientProfile.setHttpProfile(httpProfile);
// 實(shí)例化要請(qǐng)求產(chǎn)品的client對(duì)象,clientProfile是可選的
OcrClient client = new OcrClient(cred,tencentCloudProperties.getRegion(), clientProfile);
// 實(shí)例化一個(gè)請(qǐng)求對(duì)象,每個(gè)接口都會(huì)對(duì)應(yīng)一個(gè)request對(duì)象
IDCardOCRRequest req = new IDCardOCRRequest();
//設(shè)置文件
req.setImageBase64(fileBase64);
// 返回的resp是一個(gè)IDCardOCRResponse的實(shí)例,與請(qǐng)求對(duì)象對(duì)應(yīng)
IDCardOCRResponse resp = client.IDCardOCR(req);
//轉(zhuǎn)換為IdCardOcrVo對(duì)象
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;}
基本沒(méi)啥可說(shuō)的 三件套走 照著官網(wǎng)文檔即可
gateway模塊
@PostMapping(value = "/ocr/idCardOcr", consumes = MediaType.MULTIPART_FORM_DATA_VALUE)
Result<IdCardOcrVo> idCardOcr(@RequestPart("file") MultipartFile file);
web模塊
controller和service和service模塊一樣沒(méi)啥好說(shuō)的
@Override
public IdCardOcrVo idCardOcr(MultipartFile file) {
Result<IdCardOcrVo> ocrVoResult = ocrFeignClient.idCardOcr(file);
IdCardOcrVo idCardOcrVo = ocrVoResult.getData();
return idCardOcrVo;
}
實(shí)現(xiàn)后檢驗(yàn):
在進(jìn)行登錄的時(shí)候數(shù)據(jù)出現(xiàn)這個(gè)小問(wèn)題:
com.mysql.cj.exceptions.UnableToConnectException: Public Key Retrieval is not allowed
MySQL 連接時(shí)常見(jiàn)的公鑰檢索問(wèn)題
最新版mysql的版本問(wèn)題 需要設(shè)置一些 在配置文件加入
useUnicode=true&characterEncoding=utf8&useSSL=false&allowPublicKeyRetrieval=true&serverTimezone=UTC】
記得修改nacos上傳的配置文件








浙公網(wǎng)安備 33010602011771號(hào)