腾讯云实现短信验证码登录
生活随笔
收集整理的這篇文章主要介紹了
腾讯云实现短信验证码登录
小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.
騰訊云實(shí)現(xiàn)短信驗(yàn)證碼登錄
- 騰訊云配置
- 后端邏輯實(shí)現(xiàn)
騰訊云配置
首先在騰訊云搜索短信
然后按要求創(chuàng)建短信簽名,短信模板。短信模板很容易審核,但是簽名比較復(fù)雜,需要按要求填寫和上傳相關(guān)信息。如果駁回可以查看哪里出問(wèn)題,然后繼續(xù)提交審核。
成功以后可以查看,要記住簽名內(nèi)容,下面會(huì)用到。
都創(chuàng)建成功以后就可以編寫后端代碼了
后端邏輯實(shí)現(xiàn)
在pom.xml中導(dǎo)入依賴
<!--騰訊云短信--><dependency><groupId>com.tencentcloudapi</groupId><artifactId>tencentcloud-sdk-java</artifactId><version>3.1.284</version></dependency><dependency><groupId>com.github.qcloudsms</groupId><artifactId>qcloudsms</artifactId><version>1.0.6</version></dependency>在yml中配置信息
tencent:msm:id: 填入自己的訪問(wèn)秘鑰,位置在右上角點(diǎn)擊個(gè)人頭像->選擇訪問(wèn)管理->新建秘鑰secret: 上面查到的第二個(gè)信息, 這個(gè)是secretkeyappId: 短信控制臺(tái)頁(yè)面->左側(cè)應(yīng)用管理->應(yīng)用列表的 SDKAppIdsignName: 短信控制臺(tái)頁(yè)面->左側(cè)國(guó)內(nèi)短信->簽名管理 簽名內(nèi)容templateId: 短信控制臺(tái)頁(yè)面->左側(cè)國(guó)內(nèi)短信->正文模板管理 Id如圖
編寫自動(dòng)生成驗(yàn)證碼的工具類,可自行修改
然后編寫調(diào)用yml中配置的參數(shù)的工具類
@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;//六個(gè)相關(guān)的參數(shù)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;}}然后編寫短信發(fā)送的工具類
public class SMSUtils {public static boolean send(String phone, String code) {//判斷手機(jī)是否為nullif (StringUtils.isEmpty(phone)){return false;}try {/* 必要步驟:* 實(shí)例化一個(gè)認(rèn)證對(duì)象,入?yún)⑿枰獋魅腧v訊云賬戶密鑰對(duì) secretId 和 secretKey* 本示例采用從環(huán)境變量讀取的方式,需要預(yù)先在環(huán)境變量中設(shè)置這兩個(gè)值* 您也可以直接在代碼中寫入密鑰對(duì),但需謹(jǐn)防泄露,不要將代碼復(fù)制、上傳或者分享給他人* CAM 密鑰查詢:https://console.cloud.tencent.com/cam/capi*/Credential cred = new Credential(MsmConstantUtils.SECRET_ID, MsmConstantUtils.SECRET_KEY);// 實(shí)例化一個(gè)http選項(xiàng),可選的,沒(méi)有特殊需求可以跳過(guò)HttpProfile httpProfile = new HttpProfile();httpProfile.setEndpoint("sms.tencentcloudapi.com");// 實(shí)例化一個(gè)client選項(xiàng),可選的,沒(méi)有特殊需求可以跳過(guò)ClientProfile clientProfile = new ClientProfile();clientProfile.setHttpProfile(httpProfile);// 實(shí)例化要請(qǐng)求產(chǎn)品的client對(duì)象,clientProfile是可選的SmsClient client = new SmsClient(cred, "ap-guangzhou", clientProfile);// 實(shí)例化一個(gè)請(qǐng)求對(duì)象,每個(gè)接口都會(huì)對(duì)應(yīng)一個(gè)request對(duì)象SendSmsRequest req = new SendSmsRequest();String[] phoneNumberSet1 = {"+86"+phone};req.setPhoneNumberSet(phoneNumberSet1);req.setSmsSdkAppid(MsmConstantUtils.APP_ID);req.setSign(MsmConstantUtils.SIGN_NAME);req.setTemplateID(MsmConstantUtils.TEMPLATE_ID);String[] templateParamSet1 = {code};req.setTemplateParamSet(templateParamSet1);// 返回的resp是一個(gè)SendSmsResponse的實(shí)例,與請(qǐng)求對(duì)象對(duì)應(yīng)SendSmsResponse resp = client.SendSms(req);// 輸出 JSON 格式的字符串回包System.out.println(SendSmsResponse.toJsonString(resp));return true;} catch (TencentCloudSDKException e) {e.printStackTrace();}return false;} }然后只需要使用SMSUtils.send(phone,code);方法即可發(fā)送短信。具體實(shí)現(xiàn)如下:
@PostMapping("/sendMsg")public Result<String> sendMsg(@RequestBody User user){//獲取手機(jī)號(hào)String phone = user.getPhone();if(StringUtils.isNotEmpty(phone)){//生成隨機(jī)的四位驗(yàn)證碼String code = ValidateCodeUtils.generateValidateCode(4).toString();log.info("code={}",code);//發(fā)送短信boolean flag = SMSUtils.send(phone,code);if (flag){//將生成的驗(yàn)證碼緩存到redis中,設(shè)置有效期五分鐘redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES);return Result.success("手機(jī)驗(yàn)證碼發(fā)送成功");}}return Result.error("發(fā)送失敗");}然后就可以運(yùn)行測(cè)試了
總結(jié)
以上是生活随笔為你收集整理的腾讯云实现短信验证码登录的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問(wèn)題。
- 上一篇: iconfont阿里巴巴矢量图标库本地下
- 下一篇: 高精度文字识别工具,图片转文字工具免费版