正在做的项目为一个类似于代驾的项目
实在没什么好总结的 项目大量使用腾讯云技术
我单抽出来一个身份/驾驶证认证技术模块(人脸检验)
前面肯定会碰到很多问题 都一一总结
我就单抽出来一个比较困扰的问题:
地图无法加载使用
真机调试 Error: 系统错误,错误码:80082,get plugin(id: wx76a9a06e5b4e693e, version: 1.0.10) failed, permission deny [20250922 21:18:01][wxb35eca7bf02a0244]
比如想要得到小程序以上加载地图插件
需要申请接口插件
想必你申请肯定会遇到很xx的问题:


参考:https://zhuanlan.zhihu.com/p/576989072
我直接给出类似图片 按照上述话术写即可 大概率会通过(仅限于地图申请接口)
然后回归正题 无法加载是原项目未更新 早就迭代了
此版本不再适配 参考官方文档https://lbs.qq.com/miniProgram/demoCenter/wxGuide/plugin/citySelector
修改如下
再看 腾讯云的认证功能使用
1.首先申请接口
可以参考文档快速上手:https://cloud.tencent.com/document/product/866/34681
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);
实现类参考官方给的文档:
注意我上述标记 检验图片是用字符串来检验的
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;}
基本没啥可说的 三件套走 照着官网文档即可
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】
记得修改nacos上传的配置文件








浙公网安备 33010602011771号