Java调用腾讯云短信API实现手机登陆验证码
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了Java调用腾讯云短信API实现手机登陆验证码,小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含7168字,纯文字阅读大概需要11分钟。
内容图文
![Java调用腾讯云短信API实现手机登陆验证码](/upload/InfoBanner/zyjiaocheng/616/56723dd0541147a6a8de96958a197b95.jpg)
一、效果展示:
![Java调用腾讯云短信API实现手机登陆验证码 - 文章图片](/upload/getfiles/0001/2021/4/30/20210430073028931.jpg)
二、必要条件
- 首先得准备一个腾讯云账号吧,也就是需要的腾讯云短信API的SDKAppleID和AppKey。
- 配置腾讯云SDK。
- 腾讯云新人都会有赠送的短信条数,有几百条呢,对于测试验证来讲,暂时用不完。
- 账号必须是实名制的。
- 在控制台找到短信,https://console.cloud.tencent.com/smsv2,如果要使用还必须得有一下准备(如下图片):
按照网站给出的步骤去创建短信签名和短信正文模板,等待审核通过就好了。
准备好之后的样例如下:
SDK在这:系统会默认给出一个应用,当然,您也可以自己创建一个应用。
接下来是签名:这里的签名内容是用Java发送短信时需要的。
然后是模板,根据自己想要的去设定模板就行,但是必须得合规,对吧。
最后是jar包了,可以通过官网去下载SDK:https://cloud.tencent.com/document/product/382/43193
当然也可以通过pom来引入jar包:
<!-- 腾讯云API --> <dependency> <groupId>com.tencentcloudapi</groupId> <artifactId>tencentcloud-sdk-java</artifactId> <version>3.1.99</version> </dependency> <dependency> <groupId>com.github.qcloudsms</groupId> <artifactId>qcloudsms</artifactId> <version>1.0.6</version> </dependency>
若已经准备好了上面所需要的的东西那么就可以开始我们的短信发送旅程了。
三、完成了所有前提条件,start coding
- 常量类Tencent:
/**
* @ClassName: Tencent
* @Description: TODO
* @author: martin-wj
* @createDate: 2020-12-21
*/
public class Tencent {
// 短信API
// SDK AppID是短信应用的唯一标识,调用短信API接口时,需要提供该参数。
public final static String SMSAPPID="您的SDKAppID";
// App Key是用来校验短信发送合法性的密码,与SDK AppID对应,需要业务方高度保密,切勿把密码存储在客户端。
public final static String SMSSDKAPPID="AppKey";
// sms签名 签名内容
public final static String SMSSIGN="签名内容";
// 短信模板ID,这是自己的短信模板的ID,根据自己的需要添加
public final static String UPDATEPHONE_SMSTEMPLATEID = "更新手机号的ID";
public final static String RESETPASSWORD_SMSTEMPLATEID = "重置密码的ID";
public final static String LOGIN_SMSTEMPLATEID = "登陆的ID";
public final static String REGISTER_SMSTEMPLATEID = "注册的ID";
}
- 工具类:
import com.github.qcloudsms.SmsSingleSender;
import com.github.qcloudsms.SmsSingleSenderResult;
import com.github.qcloudsms.httpclient.HTTPException;
import com.tencentcloudapi.common.Credential;
import com.tencentcloudapi.common.exception.TencentCloudSDKException;
//导入可选配置类
import com.tencentcloudapi.common.profile.ClientProfile;
import com.tencentcloudapi.common.profile.HttpProfile;
// 导入对应SMS模块的client
import com.tencentcloudapi.sms.v20190711.SmsClient;
// 导入要请求接口对应的request response类
import com.tencentcloudapi.sms.v20190711.models.SendSmsRequest;
import com.tencentcloudapi.sms.v20190711.models.SendSmsResponse;
import org.json.JSONException;
import org.springframework.stereotype.Component;
import java.io.IOException;
import java.util.ArrayList;
import java.util.List;
/**
* @ClassName: SmsUtils
* @Description: TODO 腾讯云短信接口工具类
* @author: martin-wj
* @createDate: 2020-12-03
*/
@Component
public class SmsUtils {
/**
* 发送短信到手机号:群发短信
* @param valcode 验证码值
* @param time 过期时间
* @param phoneNumbers 手机号的数组
* @param SMSTEMPLATEID 短信模板(常量)
* @return
*/
public static String[] sendSms(String valcode, String time, String[] phoneNumbers, String SMSTEMPLATEID) {
List<String> reStrs = new ArrayList<>();
for(String phoneNumber : phoneNumbers) {
reStrs.add(sendSms(valcode, time, phoneNumber, SMSTEMPLATEID));
}
return (String[]) reStrs.toArray();
}
/**
* 发送短信到手机号:只发一个
* @param valcode 验证码值
* @param time 过期时间
* @param phoneNumber 手机号
* @param SMSTEMPLATEID 短信模板(常量)
* @return
*/
public static String sendSms(String valcode, String time, String phoneNumber, String SMSTEMPLATEID) {
//定义返回值
String reStr = "";
try {
//参数,一定要对应短信模板中的参数顺序和个数,
String[] params = {valcode, time};
//创建ssender对象
SmsSingleSender sSender = new SmsSingleSender(Integer.parseInt(Tencent.SMSAPPID), Tencent.SMSSDKAPPID);
// 发送验证码给手机
SmsSingleSenderResult result = sSender.sendWithParam("86",
phoneNumber, Integer.parseInt(SMSTEMPLATEID), params, Tencent.SMSSIGN, "", "");
System.err.println(result.result);
// 签名参数未提供或者为空时,会使用默认签名发送短信
System.out.println(result.toString());
if(result.result==0){
reStr = "success";
System.out.println("短信发送成功!");
}else{
reStr = "error";
System.out.println("短信发送失败!");
}
} catch (HTTPException e) {
// HTTP响应码错误
e.printStackTrace();
} catch (JSONException e) {
// json解析错误
e.printStackTrace();
} catch (IOException e) {
// 网络IO错误
e.printStackTrace();
}catch (Exception e) {
// 网络IO错误
e.printStackTrace();
}
return reStr;
}
/**
* 更新手机号验证短信模板,发送多个手机号的短信验证
* @param valcode 验证码值
* @param time 验证码值在session中存留时间
* @param phoneNumbers 手机号数组
* @return
*/
public static String[] sendSmsUpdatePhone(String valcode, String time, String[] phoneNumbers) {
return sendSms(valcode, time, phoneNumbers, Tencent.UPDATEPHONE_SMSTEMPLATEID);
}
/**
* 更新手机号验证短信模板,发送给单个手机号的短信验证
* @param valcode 验证码值
* @param time 验证码值在session中存留时间
* @param phoneNumber 手机号
* @return
*/
public static String sendSmsUpdatePhone(String valcode, String time, String phoneNumber) {
return sendSms(valcode, time, phoneNumber, Tencent.UPDATEPHONE_SMSTEMPLATEID);
}
/**
* 密码重置验证的短信模板,发送多个手机号的短信验证
* @param valcode 验证码值
* @param time 验证码值在session中存留时间
* @param phoneNumbers 手机号数组
* @return
*/
public static String[] sendSmsResetPassword(String valcode, String time, String[] phoneNumbers) {
return sendSms(valcode, time, phoneNumbers, Tencent.RESETPASSWORD_SMSTEMPLATEID);
}
/**
* 密码重置验证的短信模板,发送给单个手机号的短信验证
* @param valcode 验证码值
* @param time 验证码值在session中存留时间
* @param phoneNumber 手机号
* @return
*/
public static String sendSmsResetPassword(String valcode, String time, String phoneNumber) {
return sendSms(valcode, time, phoneNumber, Tencent.RESETPASSWORD_SMSTEMPLATEID);
}
/**
* 登陆验证的短信模板,发送多个手机号的短信验证
* @param valcode 验证码值
* @param time 验证码值在session中存留时间
* @param phoneNumbers 手机号数组
* @return
*/
public static String[] sendSmsLogin(String valcode, String time, String[] phoneNumbers) {
return sendSms(valcode, time, phoneNumbers, Tencent.LOGIN_SMSTEMPLATEID);
}
/**
* 登陆验证的短信模板,发送给单个手机号的短信验证
* @param valcode 验证码值
* @param time 验证码值在session中存留时间
* @param phoneNumber 手机号
* @return
*/
public static String sendSmsLogin(String valcode, String time, String phoneNumber) {
return sendSms(valcode, time, phoneNumber, Tencent.getLOGIN_SMSTEMPLATEID);
}
/**
* 注册的手机号验证短信模板,发送多个手机号的短信验证
* @param valcode 验证码值
* @param time 验证码值在session中存留时间
* @param phoneNumbers 手机号数组
* @return
*/
public static String[] sendSmsRegister(String valcode, String time, String[] phoneNumbers) {
return sendSms(valcode, time, phoneNumbers, Tencent.REGISTER_SMSTEMPLATEID);
}
/**
* 注册的手机号验证短信模板,发送给单个手机号的短信验证
* @param valcode 验证码值
* @param time 验证码值在session中存留时间
* @param phoneNumber 手机号
* @return
*/
public static String sendSmsRegister(String valcode, String time, String phoneNumber) {
return sendSms(valcode, time, phoneNumber, Tencent.REGISTER_SMSTEMPLATEID);
}
}
如果我确实帮到了你,给一个赞,让我知道。
如有不足,欢迎指出。
内容总结
以上是互联网集市为您收集整理的Java调用腾讯云短信API实现手机登陆验证码全部内容,希望文章能够帮你解决Java调用腾讯云短信API实现手机登陆验证码所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。