保姆级——Java使用腾讯云实现手机号验证码登录

本文详细介绍了如何在腾讯云上实现短信验证码的发送。首先,需要在腾讯云注册并获取SDKAppID和AppKey,然后创建签名和正文模板。接着,在项目中引入腾讯云SDK依赖,并在配置文件中填入相关参数。核心代码包括生成验证码、保存验证码到Redis以及发送短信的方法。发送短信部分使用了腾讯云的SmsSingleSender进行调用。
摘要由CSDN通过智能技术生成

先进行准备工作,获取短信验证码需要用到的参数

1、你的系统默认应用SDK AppID

2、你的系统默认应用App Key

3、你的正文模板

4、你的签名内容

先注册腾讯云==》搜索短信,进入控制台 

可以在应用管理==》应用列表获取AppID、App Key

 

然后就可以去创建签名

 创建好之后就可以拿到,签名内容 

正文模板就在签名管理下方创建,创建时可以直接选择使用标准模板

 

就可以拿到你的正文模板ID

 

1、引入依赖:

        <!--腾讯云核心API-->
        <dependency>
            <groupId>com.tencentcloudapi</groupId>
            <artifactId>tencentcloud-sdk-java</artifactId>
            <version>3.1.111</version>
        </dependency>
        <dependency>
            <groupId>com.github.qcloudsms</groupId>
            <artifactId>qcloudsms</artifactId>
            <version>1.0.6</version>
        </dependency>

2、在配置文件添加(我的是yml配置文件)

txsms:
  AppId:  #你的系统默认应用SDK AppID
  AppKey:  #你的系统默认应用App Key
  TemplateId:  #你的正文模板ID
  signName:   #你的签名内容

3、核心代码

  1、生成验证码

  /**
     * 生成验证码
     * @return
     */
    public String getCode(){
        String str="0123456789";
        String uuid=new String();
        for(int i=0;i<4;i++)
        {
            char ch=str.charAt(new Random().nextInt(str.length()));
            uuid+=ch;
        }
        return uuid;
    }

2、发送验证码

​
    /**
     * 发送验证码
     * @return
     */
    @RequestMapping(value = "/register/createCode/{phone}",method = RequestMethod.GET)
    public ResultVO createCode(@PathVariable("phone") String phone){
        String code = getCode();
        log.info("========================>"+code);
        //将验证码保存redis,key为电话号,有效期180s
        redisTemplate.opsForValue().set(phone,code,180, TimeUnit.SECONDS);
        //发送短信,腾讯云短信国企,暂时注释
        String Msg = txSmsTemplate.sendMesModel(phone, code);
        return ResultVO.success();
    }

3、调用核心方法

​
import com.alibaba.fastjson.JSONException;
import com.github.qcloudsms.SmsSingleSender;
import com.github.qcloudsms.SmsSingleSenderResult;
import com.github.qcloudsms.httpclient.HTTPException;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;

import java.io.IOException;

/**
 * 腾讯云发送短信模板对象,封装了发送短信的api
 */
@Slf4j
@Component
public class TxSmsTemplate {

    // AppId  1400开头的
    @Value("${txsms.AppId}")
    private int AppId;
    // 短信应用SDK AppKey
    @Value("${txsms.AppKey}")
    private String AppKey;
    // 短信模板ID
    @Value("${txsms.TemplateId}")
    private int TemplateId;
    // 签名
    @Value("${txsms.signName}")
    private String signName;

    /**
     * 指定正文模板id发送短信
     * @param number 用户的手机号码
     * @return OK 成功  null 失败
     */
    public String sendMesModel(String number,String code) {
        try {
            // 接收生成的验证码,设置5分钟内填写
            String[] params = {code};

            // 构建短信发送器
            SmsSingleSender ssender = new SmsSingleSender(AppId, AppKey);

            SmsSingleSenderResult result = ssender.sendWithParam("86", number,
                    TemplateId, params, signName, "", ""); // 签名参数未提供或者为空时,会使用默认签名发送短信

            return result.errMsg; //OK
        } catch (HTTPException e) {
            // HTTP响应码错误
            log.info("短信发送失败,HTTP响应码错误!");
            // e.printStackTrace();
        } catch (JSONException e) {
            // json解析错误
            log.info("短信发送失败,json解析错误!");
            //e.printStackTrace();
        } catch (IOException | org.json.JSONException e) {
            // 网络IO错误
            log.info("短信发送失败,网络IO错误!");
            // e.printStackTrace();
        }
        return null;
    }
}

​

  • 7
    点赞
  • 22
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值