开启掘金成长之旅!这是我参与「掘金日新计划 · 12 月更文挑战」的第30天,点击查看活动详情
引言
相信只要是用过任何app功能的人,都会接触到一个功能,那就是手机号码接收短信验证码功能!我也相信从事程序员开发的,都接触过短信发送验证码这个功能。
那么这个功能他是怎么实现的呢?
阿里云短信服务SendSms
今天的主角是我们的阿里云提供的云短信服务。我们简单地看一下他是如何给我们提供服务的呢?
前提
发送前我们需要首先申请短信签名和短信模板。而且还要确保签名和模板已经审核通过。
使用说明
- 我们使用的是单条发送短信服务,特殊情况下也对群发小支持一下。(最多1000个手机号码发送同样的内容),而且群反会有延迟。
- 如果需要在一次请求中分别向多个不同的手机号发送不同签名和模板内容短信,使用他的另一个接口SendBatchSms。这是他的批量发送接口
- 当验证码签名和通用签名名称相同的时候,系统会优先默认使用通用签名发送短信。
具体的请求参数我这里就不列举了,我直接提上调用代码,供大家参考
public ApiResult sendMsg(String mobile) throws Exception {
String randomNumber = RandomUtils.getRandomNumber(6);
SendSmsRequest sendSmsRequest = new SendSmsRequest();
sendSmsRequest.setPhoneNumbers(mobile);
sendSmsRequest.setSignName("你的签名");
sendSmsRequest.setTemplateCode("你的模板代码");
String json = "{'code':'" + randomNumber + "'}";
sendSmsRequest.setTemplateParam(json);
SendSmsResponse resp = AliSms.sendSms(sendSmsRequest, "你的acckey", "你的acckey对应秘钥串");
if (resp.getBody().getCode().equalsIgnoreCase("ok")){
String key = mobile + "_code";
redisService.set(key,randomNumber,5L, TimeUnit.MINUTES);
String o = (String)redisService.get(key);
System.out.println(o);
System.out.println(resp.toString());
} com.aliyun.teaconsole.Client.log(com.aliyun.teautil.Common.toJSONString(TeaModel.buildMap(resp)));
return new ApiResult();
}
上方代码使我给大家列举出的发送单条短信的deom,欢迎大家留言交流。
也欢迎大家关注我的公众号《coder练习生》