自定义一个腾讯云短信验证码接口spring-starter
自定义一个腾讯云短信验证码接口spring-starter
1. 首先注册一个腾讯云的短信服务
在腾讯云官网搜索短信即可直接开通,第一次开通有100条国内免费短信
然后在控制台快速入门设置短信签名和模板,审核通过就可以用了(审核很快,我的几分钟就ok了)
申请签名需要上传资料,签名类型处,如果没有自己的网站或者app,可以申请一个自己的公众号(公众号申请也相当简单),上传公众号后台设置截图即可
接着在应用管理里创建一个专用的应用,也可以使用默认的应用,这里的SmsSdkAppId,后面调用短信服务api时要用
2.在腾讯云访问管理设置一个用户组和用户
先建一个用户组,将短信api权限添加进去,也可以添加其他的功能
然后新建一个用户或者用主账户加入到用户组中,完成后,保存密钥id和key,后面会用到
3.开始自定义我们的starter
首先创建一个空的maven项目sms-spring-boot-starter作为starter启动器,里面不需要写代码
然后创建一个springbooot项目sms-spring-boot-starter-autoconfigure配置starter
在sms-spring-boot-starter里把sms-spring-boot-starter-autoconfigure引入进来
<dependency><groupId>com.fzh</groupId><artifactId>sms-spring-boot-starter-autoconfigure</artifactId><version>0.0.1-SNAPSHOT</version></dependency>
</dependencies>
然后开始在sms-spring-boot-starter-autoconfigure里实现短信发送功能
首先引入腾讯云最新的依赖
<!-- https://mvnrepository.com/artifact/com.tencentcloudapi/tencentcloud-sdk-java --><dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><version>4.0.11</version></dependency>
根据官方api文档实现方法
public class SendSms {@Autowiredprivate SmsConfigProperties smsConfigProperties;public SendSmsResponse SendSmsClient(String phoneNumber, String TemplateParam) {// 实例化一个认证对象,入参需要传入腾讯云账户secretId,secretKey,此处还需注意密钥对的保密// 密钥可前往https://console.cloud.tencent.com/cam/capi网站进行获取Credential cred = new Credential(smsConfigProperties.getSecretId(),smsConfigProperties.getSecretKey());// 实例化一个http选项,可选的,没有特殊需求可以跳过HttpProfile httpProfile = new HttpProfile();httpProfile.setEndpoint("sms.tencentcloudapi.com");// 实例化一个client选项,可选的,没有特殊需求可以跳过ClientProfile clientProfile = new ClientProfile();clientProfile.setHttpProfile(httpProfile);// 实例化要请求产品的client对象,clientProfile是可选的SmsClient client = new SmsClient(cred, "ap-beijing", clientProfile);// 实例化一个请求对象,每个接口都会对应一个request对象SendSmsRequest req = new SendSmsRequest();//拼接号码phoneNumber = "+86" + phoneNumber;//需要发送短信的号码String[] phoneNumberSet = {phoneNumber};req.setPhoneNumberSet(phoneNumberSet);//应用idreq.setSmsSdkAppid(smsConfigProperties.getSmsSdkAppid());//签名req.setSign(smsConfigProperties.getSign());//模板idreq.setTemplateID(smsConfigProperties.getTemplateID());//传输的参数,一般就是验证码String[] TemplateParamSet = {TemplateParam};req.setTemplateParamSet(TemplateParamSet);try {// 返回的resp是一个SendSmsResponse的实例,与请求对象对应SendSmsResponse resp = client.SendSms(req);// 输出json格式的字符串回包System.out.println(SendSmsResponse.toJsonString(resp));return resp;} catch (TencentCloudSDKException e) {throw new RuntimeException(e);}}
}
将需要传递的参数写到自动配置类里
@ConfigurationProperties("tencent.sms")
public class SmsConfigProperties {private String secretId;private String secretKey;private String smsSdkAppid;//签名用的是名字,不是idprivate String sign;private String templateID;public String getSecretId() {return secretId;}public void setSecretId(String secretId) {this.secretId = secretId;}public String getSecretKey() {return secretKey;}public void setSecretKey(String secretKey) {this.secretKey = secretKey;}public String getSmsSdkAppid() {return smsSdkAppid;}public void setSmsSdkAppid(String smsSdkAppid) {this.smsSdkAppid = smsSdkAppid;}public String getSign() {return sign;}public void setSign(String sign) {this.sign = sign;}public String getTemplateID() {return templateID;}public void setTemplateID(String templateID) {this.templateID = templateID;}
}
最后设置配置类
@Configuration
@ConditionalOnMissingBean(SendSms.class)
@EnableConfigurationProperties(SmsConfigProperties.class)
public class AutoConfiguration {@Beanpublic SendSms sendSms() {SendSms sendSms = new SendSms();return sendSms;}
}
到这里还有最重要的一步!!!
在sms-spring-boot-starter-autoconfigure的resources通过spring.factories文件加载配置类,在resources下创建META-INF目录,创建spring.factories文件
# Auto Configure
org.springframework.boot.autoconfigure.EnableAutoConfiguration=\
com.sms.config.AutoConfiguration
4.将两个模块install到本地,调用的时候直接将下面的sms-spring-boot-starter的依赖引入即可,写个springboot测试一下:
<!--在新项目里导入启动器的依赖--><dependency><groupId>com.fzh</groupId><artifactId>sms-spring-boot-starter-autoconfigure</artifactId><version>0.0.1-SNAPSHOT</version></dependency>
在配置文件里写需要的参数,sign直接写签名的名字即可
controller传入手机号和验证码,注意腾讯云国内短信验证码不能超过六位
@RestController
public class DemoController {@Autowiredprivate SendSms sendSms;@GetMapping("/send/{phoneNumber}")public void onMessage(@PathVariable String phoneNumber) {//随机生成六位验证码String TemplateParam3 = String.format("%040d",new BigInteger(UUID.randomUUID().toString().replace("-", ""), 16)).substring(0, 6);//发送短信sendSms.SendSmsClient(phoneNumber, TemplateParam3);}
}
最后测试一下,会显示发送结果,大功告成!!!
自定义一个腾讯云短信验证码接口spring-starter相关推荐
- 腾讯云短信验证码接口调用案例
1:引入jar包依赖 <!--短信接口--><dependency><groupId>com.github.qcloudsms</groupId>< ...
- java叮咚云短信验证码接口调用
最近在写后台,所以有些方法想记录下来,下面是叮咚云短信验证码接口调用,叮咚云的地址http://www.dingdongcloud.com/,里面有详细的信息,下面是我写的一个方法,仅供参考. imp ...
- 使用腾讯云短信服务实现Spring Boot短信发送
发送短信 01 注册微信公众号 02 注册腾讯云账号 03 创建签名和模板 第一步 创建签名 第二部 创建模板 04 发送短信 01 注册微信公众号 在百度搜索微信公众平台,并在进入官网后注册.在账号 ...
- 调用SMS腾讯云短信验证码API的几个坑,及详细使用流程
前言 首先说下,几个坑已解决.准备说一下.使用的一些步骤 因为项目有一个短信验证码登录注册的,首先注册的是阿里的.但是审核没有审核通过,所以有注册了腾讯的 本来向截图一下阿里的,结果登录出错了,这里就 ...
- 短信验证--阿里云短信验证码接口
前言 公司最近项目需要一个手机验证码的功能,任务确定后,倍感亚历山大,以为和第三方对接的都好麻烦,查阿里的API.网上大神写的博客,各种查之后才发现,简单的一塌糊涂,这里想说个问题,不知道其他的攻城狮 ...
- C#对接云短信验证码接口 (前台+后台)
前台代码 逻辑:点击获取验证码通过调用函数生成6位随机的验证码存在隐藏的input框值,把生成的验证码和手机号码传入到后台把验证码发送给用户,把用户填写的验证码和隐藏的input框值的验证码做对比看是 ...
- php 腾讯云 短信验证码发送
1.打开腾讯云官网注册获取SDK AppID(appid).appkey(appkey).sign(签名内容).TemplateID(模板id): 2. composer 安装腾讯云的依赖 在项目 c ...
- 腾讯云短信发送接口类
依赖: com.github.qcloudsms qcloudsms 1.0.5 import com.alibaba.fastjson.JSONException; import com.githu ...
- 腾讯云短信服务——获取验证码
引言 之前介绍过阿里云短信服务,传送门:阿里云短信服务--短信发送验证码,但是由于阿里云现在短信调用门槛较高,申请有很多限制(我申请好几次都没有通过),所以只能使用测试账号给固定的手机号发送验证码,自 ...
- django实现腾讯云短信sdk和redis缓存服务,手机号验证码登录,未注册直接注册登录
先注册并完成腾讯云短信服务的审核,包括签名和模板:安装redis服务: 1.安装必要库 pip install --upgrade tencentcloud-sdk-python 如果同时有pytho ...
最新文章
- 在写游戏时钟类时,应确保时钟的计算是以某个固定的CPU为标准的
- html转义符 xsl转义符
- 当“天天酷跑”遇上“Python程序员” 另类演绎团战新玩法(学到了学到了~)
- “读书人”的事儿,能叫抄吗?
- 如何计算边缘计算的成本
- item 12: 把重写函数声明为“override”的
- Python将彩色图像转为灰度图像
- Hbase 操作工具类
- 三足鼎立 – Mac 输入法横向对比
- rs485接口上下拉_带内部上下拉电阻的无极性rs-485接口芯片的制作方法
- Pupy – 全平台远程控制工具
- Python少儿编程入门篇(1)基本数据类型
- ERP来龙与去脉和应用案例。
- 第13章WEB13-JSP模式JDBC高级篇
- android手机短信诈骗原理,安卓系统均存短信欺诈漏洞 专家:系统先天不足
- 给春节的宴客小吃来点小惊喜---绿茶甜心曲奇
- CAD2012安装失败怎么回事?
- ios 页面即将消失_20个即将推出的页面介绍及如何正确处理它们
- 2017年寒假集训分组测试赛2 Ranklist
- 微信公众号--订阅通知