前言: 现如今,电话是接外卖和快递的,短信是用来收验证码的。那么像一般的App里面使用手机号+验证码方式进行注册或登录是怎样实现的呢?这篇文章可能帮到你。
1.寻找合适的短信平台
因为三大运营商的限制摆在那里,凭个人力量当然是不太可能直接发送短信给到用户。所以我们只好依托强大的平台来做后盾。像阿里云,腾讯云等都有提供短信通知服务,虽然平台众多,但实现方式大体相同。此处以阿里云短信为例。
2.注册阿里云账号(已有账号可跳过)
使用钉钉,淘宝或支付宝扫码注册均可,链接如下,进入后点击右上角注册按钮跳转注册页面:
3.开通短信服务,购买短信套餐包
可以在阿里云首页搜索短信服务,点击后再点立即购买即可跳转,截图如下(如果提示未开通短信服务,只需要确定开通即可):
4.短信签名和短信模板申请
购买成功后,点击首页的控制台进入,如果找不到短信入口,可以在产品服务里面搜索到,截图如下,这样就进入控制台啦:
5.添加短信签名与模板(国内消息)
- 签名(点击添加按钮,填写相应资料,保存等待审核即可)
签名指的是短信内容里面中括号【】包含的文本,用作发送方身份标识。
- 模板
模板即为短信的正文内容,点击添加模板按钮,填写相关资料提交审核。
模板里面的变量使用${}语法,一个短信里面可以设置多个变量。(模板审核耗时比较长,建议尽早提交审核),当审核完成后即可以拿到templateCode。
6.集成到项目里(maven方式演示,代码已上传github)
- 获取accesskey和secret
查看右上角的头像,点击Accesskey管理,去生成key和秘钥(秘钥只生成一次,要妥善保存好)。此处还可以使用子账号的accessKey进行短信发送,但跟本次内容无关就不再详细说明。
- 添加maven依赖
注意版本的使用,这这里使用的是4.5.16
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.16</version>
</dependency>
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-dysmsapi</artifactId>
<version>1.1.0</version>
</dependency>
- 测试发送代码(springboot结合)
@Value("${signName}")
private String signName;
@Value("${templateCode}")
private String templateCode;
@Value("${accessKey}")
private String accessKey;
@Value("${accesssSecret}")
private String accesssSecret;
/**
* 发送验证码逻辑
*/
private Map<String,String> sendSms(String mobile) throws ClientException {
Map<String,String> resultMap = new HashMap<>();
//可自助调整超时时间
Sy(";, "10000");
Sy(";, "10000");
//初始化acsClient,暂不支持region化
IClientProfile profile = De("cn-hangzhou", accessKey,accesssSecret);
De("cn-hangzhou", "cn-hangzhou", "Dysmsapi", "dy;);
IAcsClient acsClient = new DefaultAcsClient(profile);
//组装请求对象-具体描述见控制台-文档部分内容
SendSmsRequest request = new SendSmsRequest();
//必填:待发送手机号
reque(mobile);
//必填:短信签名-可在短信控制台中找到
reque(signName);
reque(templateCode);
int rand_num = (in()*9+1)*100000);
reque("{"code":""+rand_num+""}");//此处最好使用转json工具
//hint 此处可能会抛出异常,注意catch
SendSmsResponse sendSmsResponse = ac(request);
String code = ();
i("OK")){
re("code","1000");
re("msg","发送成功");
}else{
re("code","-1000");
re("msg","发送失败");
}
return resultMap;
} /**
* 程序的入口
*/
@RequestMapping(value="/sendsms")
@ResponseBody
public Map<String,String> getValidCode(String mobile){
try {
return (mobile);
} catch (ClientException e) {
e.printStackTrace();
}
Map<String,String> resultMap = new HashMap<>();
re("code","-1000");
re("msg","发送失败");
return resultMap;
}
- 其他API
请查看短信官方文档。
7.总结
如上就是项目结合阿里云发送短信验证码的具体实现逻辑了。我们可以结合缓存工具(如redis),实现验证码的有效期,从而进一步实现登录的业务逻辑。流程图如下:
1.文章《‘用什么向手机发送短信’steam无法向手机发送短信!》援引自互联网,为网友投稿收集整理,仅供学习和研究使用,内容仅代表作者本人观点,与本网站无关,侵删请点击页脚联系方式。
2.文章《‘用什么向手机发送短信’steam无法向手机发送短信!》仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证。
相关推荐
- . 现代买票为什么带上携程保险
- . 潮阳怎么去广州南站
- . 湖南马拉河怎么样
- . 烧纸为什么到三岔路口
- . 百色为什么这么热
- . 神州租车怎么样
- . 芜湖方特哪个适合儿童
- . 护肤品保养液是什么类目
- . 早晚的护肤保养有哪些项目
- . 女孩护肤品怎么保养的最好