项目集成短信验证功能(阿里云)详细实用教程
阿里云手机短信验证码
第一步 登录阿里云开放平台
1、进入阿里云开放平台---->点击控制台
2、点击AccessKey管理
3、点击之后会弹出提示,选择开始使用子用户
4、新建一个用户组,然后按要求填写即可
5、创建一个用户,按要求填写内容,勾选编程访问
6、会得到AccessKey(id,密码)
要将这个账号保存下来!
//用户登录名称 ====================
//AccessKey ID ====================
//AccessKey Secret ============================
第二步,开通阿里云短信服务
1、找到短信控制台面板,点击国内消息
2、选择模板管理,点击添加模板
以下内容按要求填写即可,申请说明需要有正当理由不然审核可能通不过
点击提交,等待审核
3、步骤同上,点击签名管理,添加签名
注:签名需要填写应用名称、网站名称 例如:(dy学习网站) 个人用户选择适用场景的时候选择验证码,申请说明需要填写正当理由。不然可能审核不通过。
提交后等待审核通过即可。
第三步,编写代码测试
1、新建项目
创建一个Java项目,笔者创建的是SpringBoot项目
2、添加依赖
点击快速学习——> 查看APIDemo,里面会有maven的依赖和官方的Demo
maven依赖:
<dependency><groupId>com.aliyun</groupId><artifactId>aliyun-java-sdk-core</artifactId><version>4.5.0</version>
</dependency>
3、编写代码
简单测试,结合了redis的使用
controller:
package com.qxx.sendmessage.controller;
import com.qxx.sendmessage.service.SendMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;
import java.util.HashMap;
import java.util.UUID;
import java.util.concurrent.TimeUnit;
/**
- @author 东亚猛男Qxx
*/
@RestController
@CrossOrigin //跨域的支持
public class Controller {
<span class="token annotation punctuation">@Autowired</span>
<span class="token keyword">private</span> SendMessage sendMessage<span class="token punctuation">;</span>
<span class="token annotation punctuation">@Autowired</span>
<span class="token keyword">private</span> RedisTemplate<span class="token generics function"><span class="token punctuation"><</span>String<span class="token punctuation">,</span>String<span class="token punctuation">></span></span> template<span class="token punctuation">;</span><span class="token comment">//RestFul风格请求</span>
<span class="token annotation punctuation">@GetMapping</span><span class="token punctuation">(</span><span class="token string">"/send/{phone}"</span><span class="token punctuation">)</span>
<span class="token keyword">public</span> String <span class="token function">send</span><span class="token punctuation">(</span><span class="token annotation punctuation">@PathVariable</span><span class="token punctuation">(</span><span class="token string">"phone"</span><span class="token punctuation">)</span> String phone<span class="token punctuation">)</span><span class="token punctuation">{</span><span class="token comment">//先看redis里面该手机号储存的验证码是否失效</span>String code <span class="token operator">=</span> template<span class="token punctuation">.</span><span class="token function">opsForValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">get</span><span class="token punctuation">(</span>phone<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">if</span> <span class="token punctuation">(</span><span class="token operator">!</span>StringUtils<span class="token punctuation">.</span><span class="token function">isEmpty</span><span class="token punctuation">(</span>code<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">{</span><span class="token keyword">return</span> phone<span class="token operator">+</span><span class="token string">":"</span><span class="token operator">+</span><span class="token string">"验证码尚未过期!"</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token comment">//截取6为字符当作验证码(UUID)</span>code <span class="token operator">=</span> UUID<span class="token punctuation">.</span><span class="token function">randomUUID</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">toString</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">substring</span><span class="token punctuation">(</span><span class="token number">0</span><span class="token punctuation">,</span> <span class="token number">5</span><span class="token punctuation">)</span><span class="token punctuation">;</span>HashMap<span class="token generics function"><span class="token punctuation"><</span>String<span class="token punctuation">,</span>Object<span class="token punctuation">></span></span> map <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">HashMap</span><span class="token operator"><</span><span class="token operator">></span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//key必须为code</span>map<span class="token punctuation">.</span><span class="token function">put</span><span class="token punctuation">(</span><span class="token string">"code"</span><span class="token punctuation">,</span>code<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//调用service层的方法 传两个参数:phone,map</span>Boolean flag <span class="token operator">=</span> sendMessage<span class="token punctuation">.</span><span class="token function">sendMessage</span><span class="token punctuation">(</span>phone<span class="token punctuation">,</span>map<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">if</span> <span class="token punctuation">(</span>flag<span class="token punctuation">)</span><span class="token punctuation">{</span><span class="token comment">//存入redis,设置失效时间</span>template<span class="token punctuation">.</span><span class="token function">opsForValue</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">set</span><span class="token punctuation">(</span>phone<span class="token punctuation">,</span>code<span class="token punctuation">,</span><span class="token number">5</span><span class="token punctuation">,</span> TimeUnit<span class="token punctuation">.</span>MINUTES<span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">return</span> phone<span class="token operator">+</span><span class="token string">":"</span><span class="token operator">+</span><span class="token string">"验证码"</span><span class="token operator">+</span>code<span class="token operator">+</span><span class="token string">"发送成功!"</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">return</span> <span class="token string">"发送失败"</span><span class="token punctuation">;</span>
<span class="token punctuation">}</span>
}
service:
package com.qxx.sendmessage.service.impl;
import com.alibaba.fastjson.JSONObject;
import com.aliyuncs.CommonRequest;
import com.aliyuncs.CommonResponse;
import com.aliyuncs.DefaultAcsClient;
import com.aliyuncs.IAcsClient;
import com.aliyuncs.exceptions.ClientException;
import com.aliyuncs.exceptions.ServerException;
import com.aliyuncs.http.MethodType;
import com.aliyuncs.profile.DefaultProfile;
import com.qxx.sendmessage.service.SendMessage;
import org.springframework.stereotype.Service;
import java.util.HashMap;
import java.util.Map;
/**
@author 东亚猛男Qxx
*/
@Service
public class SendMessageImpl implements SendMessage {
@Override
public Boolean sendMessage(String phoneNum,Map<String, Object> map) {
System.out.println(JSONObject.toJSONString(map));
//连接阿里云,第一个参数不用改变,后两个填写自己的accessKeyId和accessSecret
DefaultProfile profile = DefaultProfile.getProfile(“cn-hangzhou”, “<accessKeyId>”, “<accessSecret>”);
IAcsClient client = new DefaultAcsClient(profile);<span class="token comment">//构建请求!</span>CommonRequest request <span class="token operator">=</span> <span class="token keyword">new</span> <span class="token class-name">CommonRequest</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span>request<span class="token punctuation">.</span><span class="token function">setSysMethod</span><span class="token punctuation">(</span>MethodType<span class="token punctuation">.</span>POST<span class="token punctuation">)</span><span class="token punctuation">;</span>request<span class="token punctuation">.</span><span class="token function">setSysDomain</span><span class="token punctuation">(</span><span class="token string">"dysmsapi.aliyuncs.com"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//不要动</span>request<span class="token punctuation">.</span><span class="token function">setSysVersion</span><span class="token punctuation">(</span><span class="token string">"2017-05-25"</span><span class="token punctuation">)</span><span class="token punctuation">;</span> <span class="token comment">//不要动</span>request<span class="token punctuation">.</span><span class="token function">setSysAction</span><span class="token punctuation">(</span><span class="token string">"SendSms"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//自定义参数(手机号,验证码,签名,模板)</span>request<span class="token punctuation">.</span><span class="token function">putQueryParameter</span><span class="token punctuation">(</span><span class="token string">"RegionId"</span><span class="token punctuation">,</span> <span class="token string">"cn-hangzhou"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>request<span class="token punctuation">.</span><span class="token function">putQueryParameter</span><span class="token punctuation">(</span><span class="token string">"PhoneNumbers"</span><span class="token punctuation">,</span> phoneNum<span class="token punctuation">)</span><span class="token punctuation">;</span>request<span class="token punctuation">.</span><span class="token function">putQueryParameter</span><span class="token punctuation">(</span><span class="token string">"SignName"</span><span class="token punctuation">,</span> <span class="token string">"签名"</span><span class="token punctuation">)</span><span class="token punctuation">;</span>request<span class="token punctuation">.</span><span class="token function">putQueryParameter</span><span class="token punctuation">(</span><span class="token string">"TemplateCode"</span><span class="token punctuation">,</span> <span class="token string">"模板(SMS-*****)"</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token comment">//构建一个短信的验证码</span>request<span class="token punctuation">.</span><span class="token function">putQueryParameter</span><span class="token punctuation">(</span><span class="token string">"TemplateParam"</span><span class="token punctuation">,</span> JSONObject<span class="token punctuation">.</span><span class="token function">toJSONString</span><span class="token punctuation">(</span>map<span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">try</span> <span class="token punctuation">{</span>CommonResponse response <span class="token operator">=</span> client<span class="token punctuation">.</span><span class="token function">getCommonResponse</span><span class="token punctuation">(</span>request<span class="token punctuation">)</span><span class="token punctuation">;</span>System<span class="token punctuation">.</span>out<span class="token punctuation">.</span><span class="token function">println</span><span class="token punctuation">(</span>response<span class="token punctuation">.</span><span class="token function">getData</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token keyword">return</span> response<span class="token punctuation">.</span><span class="token function">getHttpResponse</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">.</span><span class="token function">isSuccess</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">ServerException</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span>e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span> <span class="token keyword">catch</span> <span class="token punctuation">(</span><span class="token class-name">ClientException</span> e<span class="token punctuation">)</span> <span class="token punctuation">{</span>e<span class="token punctuation">.</span><span class="token function">printStackTrace</span><span class="token punctuation">(</span><span class="token punctuation">)</span><span class="token punctuation">;</span><span class="token punctuation">}</span><span class="token keyword">return</span> <span class="token boolean">false</span><span class="token punctuation">;</span>
}
}
4、测试
此处用的是postman工具
redis:
短信:
结语:
可以编写可复用的微服务接口,来实现验证码的发送,根据实际情况进行封装
关注微信公众号
java学长
学习更多java技术干货,提升职场技术水平!
项目集成短信验证功能(阿里云)详细实用教程相关推荐
- 阿里云邮箱短信验证和阿里云手机短信发送
1:阿里云邮箱验证:service层 /***输入的格式是2060084769@qq.com* 阿里云邮箱验证* @param email* @param Code* @return*/@Overri ...
- [Android]手机短信验证功能
介绍 短信验证功能大家都很熟悉了.在很多地方都能见到,注册新用户或者短息验证支付等.短信验证利用短信验证码来注册会员,大大降低了非法注册,很大程度上提高了用户账户的安全性. 目前市面上已经有了很多提供 ...
- 阿里云的短信验证功能实现
阿里云的短信验证功能实现 第一步:申请 签名,模板,RAM访问控制 签名 模板 RAM访问控制 创建用户 创建完一定要保存 这个 截图里面的参数 这只能看一次 创建完成,添加授权 搜索 短信 添加 管 ...
- 使用腾讯云sms实现短信验证功能
使用腾讯云sms实现短信验证功能 腾讯云短信免费试用:https://console.cloud.tencent.com/smsv2 腾讯云短信功能注册完成,并通过审批.就可以得到以下参数. Secr ...
- 短信服务之阿里云平台
短信服务之阿里云短信平台 开通阿里云短信服务 集成到TP5框架 安装 使用 如果解决了你的疑问,麻烦点个赞吧,当然也不介意您关注收藏下的呢 开通阿里云短信服务 登录阿里云进入控制台 产品与服务–> ...
- 手机短信验证功能实现
手机短信验证功能实现 1首先要注册阿里云账号 注册地址 :http://click.aliyun.com/se/766441/ 2 登录账号在全部导航 - 产品 - 云通讯 - 短信服务 -控制台 3 ...
- 利用第三方服务平台实现简单的短信验证功能
在本篇文章中,将会利用第三方服务平台实现短信验证功能. 首先,先介绍一下刚才提及的第三方服务平台:mob.com 移动开发者服务平台 该平台呢,主要有以下几点功能: 1.为IOS.Android的AP ...
- 小程序实现手机短信验证功能
小程序实现手机短信验证功能 废话不多说,直接把项目写的手机短信验证功能发出来 .wxml <form bindsubmit="phone"> <input typ ...
- Android实现短信验证功能(功能的使用)
上一篇我们实现了短信验证功能的前期准备的工作,这篇我们就详细的来介绍如何实现利用手机号完成注册 如何没有做准备工作的,请参看上一篇,开始前的准备:http://blog.csdn.net/u01169 ...
最新文章
- 219个opencv常用函数汇总
- EMQ学习 ---集群
- OpenCV GPU 简单遍历图像
- 【计算机算法设计与分析】——排序
- nginx php-fpm 下的php.ini在哪里
- 买下千万美元豪宅的库克 在周日获得了价值3600万美元股票
- 数组作为方法的返回值
- SQL 个人所学目录
- Matlab 图像像素点在RGB空间的显示
- 如何用电脑录制视频?图文教学,快速学会
- css div背景图大小,divcss如何改变背景图片大小
- 项目管理 - 团队成员无法按期完成任务怎么办?
- Excel表格每页都打印表头
- 4.12 使用反相命令反转图片色彩 [原创Ps教程]
- matlab 零速检测,一种基于车辆零速检测的惯性导航误差修正方法与流程
- 【论文阅读】DeepGauge: multi-granularity testing criteria for deep learning systems.
- Spring中Bean及@Bean的理解
- Google Code Jam 2014 -- C
- 供应商管理软件如何选型 好用的供应商管理软件推荐
- 百科不全书之Python网络爬虫1
热门文章
- Java 数组在内存中的存储 数组的常见操作
- linux cd 命令详解,linux cd 命令详解
- oracle 尖括号_关于方括号和尖括号的区别
- c++ memset 语言_c++ memset
- ❤️创意网页:贪吃蛇游戏 - 创造一个经典的小游戏
- IPOPT工具解决非线性规划最优化问题使用案例
- android 短信验证码自动填写的两种方式
- Linux通过ifconfig命令ens33没有显示ip地址解决方式
- 计算广告、推荐系统论文以及DSP综述
- 根据真实数据计算一段时间内价格走势,echarts折线图数据补全方法。