话不多说, 直接开始

目录

腾讯云短信服务注册相关

发送短信 API 开发

配置相关

接口


腾讯云短信服务注册相关

① 在腾讯云首页搜索短信

腾讯云地址: 腾讯云 - 产业智变 云启未来

搜索出来后点击免费试用就可以

之后就按流程走最后进入控制台

② 新手配置指引

按照步骤做即可, 值得一提的是第一步, 创建短信签名

③ 创建短信签名

这里比较推荐使用公众号进行创建短信签名, 其他的相对于个人而言可能比较麻烦

公众号注册地址: 微信公众平台

④ 之后就按流程走

创建模板后等待审核, 等审核好了之后可以进行下一步

个人比较喜欢这一套模板

⑤ 测试发送短信

这个可以先选择用控制台方式测试, 若使用了带参数的模板, 比如我上文推荐的那套模板, 需要下载标准模板格式, 然后在里面声明内容后再上传回去, 进行测试.

这一步测不测试都可以. 我当时是用控制台测试的, 等待审核等了十来分钟, 所以要是测试没立刻发送短信很正常

发送短信 API 开发

配置相关

① 引入 pom 依赖

<dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><version>3.1.460</version>
</dependency>

这里的版本因为我现在做的时候调用 API Explorer 生成的代码, 就随便找了个适合的版本使用, 根据自己实际需求进行选择

② 修改 yml 配置文件

这里没什么好说的, 就是指定端口, 服务名等. 记得配置Redis, 主要是用来进行过期校验, 此处设置过期时间为30分钟. 还有要配置关于一会儿要连接你腾讯云所需的参数

spring:redis:host: 自己的Redisip地址port: 6379database: 0password: 123456timeout: 1800000lettuce:pool:max-active: 20#    最大阻塞等待时间max-wait: -1max-idle: 5min-idle: 0
tencent:msm:id: 填入自己的访问秘钥,位置在右上角点击个人头像->选择访问管理->新建秘钥secret: 同上, 这个是secretkeyappId: 短信控制台页面->左侧应用管理->应用列表的 SDKAppIdsignName: 短信控制台页面->左侧国内短信->签名管理 签名内容templateId: 短信控制台页面->左侧国内短信->正文模板管理 Id

上述的 腾讯云属性配置也可配置在一会儿的实现类中, 直接明文的方式写


接口

  • code 生成工具类

看自己需要可以酌情改动

public class RandomUtils {private static final Random random = new Random();private static final DecimalFormat fourdf = new DecimalFormat("0000");private static final DecimalFormat sixdf = new DecimalFormat("000000");//      生成四位验证码public static String getFourBitRandom() {return fourdf.format(random.nextInt(10000));}//     生成六位验证码public static String getSixBitRandom() {return sixdf.format(random.nextInt(1000000));}//      给定数组,抽取n个数据public static ArrayList getRandom(List list, int n) {Random random = new Random();HashMap<Object, Object> hashMap = new HashMap<Object, Object>();// 生成随机数字并存入HashMapfor (int i = 0; i < list.size(); i++) {int number = random.nextInt(100) + 1;hashMap.put(number, i);}// 从HashMap导入数组Object[] robjs = hashMap.values().toArray();ArrayList r = new ArrayList();// 遍历数组并打印数据for (int i = 0; i < n; i++) {r.add(list.get((int) robjs[i]));System.out.print(list.get((int) robjs[i]) + "\t");}System.out.print("\n");return r;}
}
  • 调用配置文件中腾讯云参数的工具类

这个如果打算在实现类中明文的方式写参数不需要配置

//实现InitializingBean接口,当spring进行初始化bean时,会执行afterPropertiesSet方法
@Component
public class MsmConstantUtils implements InitializingBean {@Value("${tencent.msm.id}")private String secretID ;@Value("${tencent.msm.secret}")private String secretKey ;@Value("${tencent.msm.appId}")private String appId;@Value("${tencent.msm.signName}")private String signName;@Value("${tencent.msm.templateId}")private String templateId;//六个相关的参数public static String SECRET_ID;public static String SECRET_KEY;public static String APP_ID;public static String SIGN_NAME;public static String TEMPLATE_ID;@Overridepublic void afterPropertiesSet() throws Exception {SECRET_ID = secretID;SECRET_KEY = secretKey;APP_ID = appId;SIGN_NAME = signName;TEMPLATE_ID = templateId;}
}
  • ServiceImpl

这里提一个小建议, 如果只是自用选择使用明文方式填充可以直接使用 API Explorer 进行生成

地址: 短信 发送短信-API 文档-文档中心-腾讯云

import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
import com.tencentcloudapi.sms.v20210111.SmsClient;
import com.tencentcloudapi.sms.v20210111.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20210111.models.SendSmsResponse;
import com.msm.service.MsmService;
import com.msm.utils.MsmConstantUtils;
import org.springframework.stereotype.Service;
import org.springframework.util.StringUtils;@Service
public class MsmServiceImpl implements MsmService {@Overridepublic boolean send(String phone, String code) {//判断手机是否为nullif (StringUtils.isEmpty(phone)){return false;}try {/* 必要步骤:* 实例化一个认证对象,入参需要传入腾讯云账户密钥对 secretId 和 secretKey* 本示例采用从环境变量读取的方式,需要预先在环境变量中设置这两个值* 您也可以直接在代码中写入密钥对,但需谨防泄露,不要将代码复制、上传或者分享给他人* CAM 密钥查询:https://console.cloud.tencent.com/cam/capi*/Credential cred = new Credential(MsmConstantUtils.SECRET_ID, MsmConstantUtils.SECRET_KEY);// 实例化一个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-guangzhou", clientProfile);// 实例化一个请求对象,每个接口都会对应一个request对象SendSmsRequest req = new SendSmsRequest();String[] phoneNumberSet1 = {phone};req.setPhoneNumberSet(phoneNumberSet1);req.setSmsSdkAppId(MsmConstantUtils.APP_ID);req.setSignName(MsmConstantUtils.SIGN_NAME);req.setTemplateId(MsmConstantUtils.TEMPLATE_ID);String[] templateParamSet1 = {code, "30"};req.setTemplateParamSet(templateParamSet1);// 返回的resp是一个SendSmsResponse的实例,与请求对象对应SendSmsResponse resp = client.SendSms(req);// 输出 JSON 格式的字符串回包System.out.println(SendSmsResponse.toJsonString(resp));return true;} catch (TencentCloudSDKException e) {e.printStackTrace();}return false;}
}
  • Controller:
@RestController
@RequestMapping("/api/msm")
public class MsmController {@Autowiredprivate MsmService msmService;@Autowiredprivate RedisTemplate<String,String> redisTemplate;@ApiOperation(value = "发送手机验证码")@GetMapping("/send/{phone}")public Result sendCode(@PathVariable String phone){String code = redisTemplate.opsForValue().get(phone);if(StringUtils.hasText(code)) {return Result.ok();}//如果从redis获取不到//生成验证码code = RandomUtils.getSixBitRandom();//整合腾讯云短信服务进行发送boolean flag = msmService.send(phone, code);if (flag) {//生成验证码放到redis里面,设置有效时间redisTemplate.opsForValue().set(phone, code, 30, TimeUnit.MINUTES);return Result.ok();}return Result.fail().message("发送短信失败");}
}

到此关于短信的后端部分已经全部实现, 若希望测试的话有很多种方法, 比如使用 API Explorer, 或者将 serviceImpl 中的 send() 方法抽取出来建立 main 方法, 在其中修改一些比如手机号、验证码进行测试等

使用腾讯云实现发送短信验证码登录的后端实现相关推荐

  1. 使用腾讯云模板发送短信验证码

    目录 学习目标: 学习内容: 学习时间: 学习过程: demo结构图: 效果图: 配置准备: 依赖pom.xml application.properties: application.yml 腾讯云 ...

  2. node.js实现阿里云配置发送短信验证码

    目录 开始 签名添加 模板添加 测试短信 项目中使用 Core accessKeyId | accessKeySecret params PhoneNumbers SignName TemplateC ...

  3. go 实现发送短信验证码登录

    现在大多数app或wap都实现了通过手机号获取验证码进行验证登录,下面来看下用go来实现手机号发送短信验证码登录的过程,基于的框架是gin . 首先是短信服务商的申请,比如腾讯云.阿里云.网易易盾等, ...

  4. python发送短信验证码登录_python发送短信验证码

    原标题:python发送短信验证码 业务: 手机端点击发送验证码,请求发送到python端,由python调用榛子云短信http://smsow.zhenzikj.com的短信接口,生成验证码并发送. ...

  5. 手机发送短信验证码登录完整实例

    项目需求 后台生成随机6位数作为验证码,发送给手机,同时将验证码存入缓存,用户登录时验证输入的验证码是否过期或者是否正确. 一.发送短信 1.了解短信发送 通过发送短信的API,建立一个URL类的对象 ...

  6. JavaWeb-SpringBoot_一个类实现腾讯云SDK发送短信

    腾讯云应用列表 传送门 使用Gradle编译项目 传送门 SDK&API:qcloudsms_java 传送门 package com.Gary.sms.controller;import j ...

  7. python控制手机发短信_python-在python3中使用容联云通讯发送短信验证码

    2020-08-15更新 今天进容联云官网发现其已经更新了最新版的Python SDK,可以直接 pip install ronglian_sms_sdk 即可安装使用,具体新的使用方法可以查看官网案 ...

  8. java微信发送验证码,详解如何使用微信小程序云函数发送短信验证码

    其实微信小程序前端和云端都是可以调用短信平台接口发送短信的,使用云端云函数的好处是无需配置域名,也没有个数限制. 1.安装 下载后的SDK在cloudfunctions文件夹下会包含3个云函数文件夹, ...

  9. 云通讯——发送短信验证码

    1.首先,注册账号,容联云通讯网址:点我 2.添加一个用于测试接收短信验证码的的手机号 插件包及其使用说明 模板短信 SDK 下载: https://www.yuntongxun.com/doc/re ...

最新文章

  1. 社交媒体分析-恶意内容自动检测相关论文
  2. C语言实现基数排序Radix sort算法之一(附完整源码)
  3. javadoc源码获取
  4. 3d打印英语文献_锐医学院 | 只需10分钟!解读康复医学文献+英语学习
  5. VS2010版快捷键指南
  6. jquery在IE8上使用find的问题
  7. 粒子群优化算法python实现
  8. Azkaban的安装部署
  9. Android Handler机制 - MessageQueue如何处理消息
  10. 如何让html 兼容IE和chrome,chrome兼容模式如何切换成IE兼容模式_chrome兼容模式切换成IE兼容模式的方法-系统城...
  11. 移动光猫RAISECOM的配置方法
  12. Oracle表空间增加方法
  13. 不同的count用法
  14. 各操作系统支持图标字体的终端推荐
  15. 上海居住证满3年或积分满120分房产税退税流程2014年
  16. 日立、李锦记亮相云学堂广州峰会 纵论企业人才培养核心要素
  17. 如何提升自己的运气?提升运气财运的方法
  18. 【G4基础08】GPS-2-Macro Commands宏命令
  19. 冯唐:我给20、30岁IT职场年轻人的建议
  20. 计算机模拟风洞,Dlubal RWIND Simulation Pro 1.2 - 风荷载模拟 (风洞)软件

热门文章

  1. Redis集群方案:redis-cluste原理与搭建
  2. 微信小程序之支付流程
  3. 显卡温度过高怎么办,解决显卡温度过高办法?
  4. 独立产品灵感周刊 DecoHack #027 - 今天的天气适合穿短裤
  5. 关闭chrome浏览器自动debugger
  6. 如何设置计算机自动连接宽带,宽带自动连接如何设置【图文】
  7. oracle查询数据库名、实例名等
  8. 程序媛人生——专访“龙书”《编译原理》联合作者 Monica S. Lam
  9. Git分支管理与标签管理(the last)
  10. sin35度等于多少怎么用计算机算,sin35度等于多少(sin35度29分等于多少)