腾讯云短信验证登录

本文详细介绍了如何在腾讯云平台上获取和使用短信验证码,包括账号设置、购买短信套餐、获取必要的参数(如secretId、secretKey、SmsSdkAppId和TemplateId),以及使用JavaSDK进行验证码的发送和验证过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

提前准备工作

1.已 注册腾讯云 账号,并完成 企业实名认证

2.已 购买 短信套餐包。

3.准备短信签名归属方资质证明文件

4.已获取短信应用的 SDKAppID。

主要获取这几个参数

secretId(秘钥id)

secretKey(秘钥key)

SmsSdkAppId(appId)

TemplateId(短信模板id)

目录

1.获取验证码、缓存

2.从缓存中获取验证码、校验


1.获取验证码、缓存

1.1参考腾讯云对接腾讯云接口文档短信 如何实现短信验证码功能-最佳实践-文档中心-腾讯云

1.2使用腾讯云在线调试,先做调试,可以正确获取短信后,生成java代码

下面附上代码,供大家参考

 /**
     * 获取腾讯云手机短信验证码
     *
     * @param phone
     * @return
     */
    @Override
    public ResponseResult getPhoneNumberVerify(String phone) {
        Object p = CacheUtils.get("phoneVerifyCode", phone);
        if (StringUtils.isEmpty(phone)){
            return null;
        }
        if(null != p && !String.valueOf(p).isEmpty()){
            return ResponseResultUtils.genErrorResult("请勿重复获取验证码");
        }
        String regex = "^1[3,4,5,6,7,8,9][0-9]{9}$";
        if (!phone.matches(regex)){
            return ResponseResultUtils.genErrorResult("手机号格式不正确");
        }
        try{
            // 实例化一个认证对象,入参需要传入腾讯云账户 SecretId 和 SecretKey,此处还需注意密钥对的保密
            Credential cred = new Credential("秘钥id", "秘钥keyb");
            // 实例化一个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("SmsSdkAppId");
            req.setSignName("签名内容(这个参数不是不填)");
            req.setTemplateId("短信模板id");
            Random random = new Random();
            int randomNumber = random.nextInt(999999);
            String[] templateParamSet1 = {String.valueOf(randomNumber)};
            req.setTemplateParamSet(templateParamSet1);
            // 返回的resp是一个SendSmsResponse的实例,与请求对象对应
            SendSmsResponse resp = client.SendSms(req);
            // 输出json格式的字符串回包
            System.out.println("--->"+SendSmsResponse.toJsonString(resp));
            SendStatus[] sendStatusSet = resp.getSendStatusSet();
            JSONObject jsonObject = JSONObject.from(sendStatusSet[0]);
            if ("Ok".equals(jsonObject.getString("Code"))){
                CacheUtils.put("phoneVerifyCode",phone,randomNumber,60000);
                return ResponseResultUtils.genResult("发送成功");
            }
        } catch (TencentCloudSDKException e) {
            System.out.println(e.toString());
        }
        return ResponseResultUtils.genErrorResult("发送失败");
    }

 此外还需要在pom.xml加上包依赖

<!--腾讯云短信登录获取验证码-->
        <dependency>
            <groupId>com.tencentcloudapi</groupId>
            <artifactId>tencentcloud-sdk-java-common</artifactId>
            <version>LATEST</version>
        </dependency>
        <dependency>
            <groupId>com.tencentcloudapi</groupId>
            <artifactId>tencentcloud-sdk-java-sms</artifactId>
            <version>LATEST</version>
        </dependency>
        <!--end-->
2.从缓存中获取验证码、校验

2.1校验验证码就很简单啦,从缓存中根据手机号获取验证码,我用的是系统自带缓存,使用redis的话,根据收据号手机号key,获取value

/**
     * 验证腾讯云手机短信验证码
     *
     * @param code
     * @param phone
     * @return
     */
    @Override
    public ResponseResult verifyPhoneVerifyCode(String code, String phone) {
        String verifyCode = CacheParamUtils.getParmValue("phone.verify.code");
        if (verifyCode.equals(code)){
            return ResponseResultUtils.genResult("验证成功");
        }
        Object p = CacheUtils.get("phoneVerifyCode", phone);
        if (null == p && StringUtils.isEmpty(String.valueOf(p))){
            return  ResponseResultUtils.genErrorResult("验证码失效");
        }
        if (String.valueOf(p).equals(code)){
            return ResponseResultUtils.genResult("验证成功");
        }
        return ResponseResultUtils.genErrorResult("验证失败");
    }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

没有腰的嘟嘟嘟

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值