阿里云手机短信验证码

第一步 登录阿里云开放平台

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">&lt;</span>String<span class="token punctuation">,</span>String<span class="token punctuation">&gt;</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">&lt;</span>String<span class="token punctuation">,</span>Object<span class="token punctuation">&gt;</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">&lt;</span><span class="token operator">&gt;</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. 阿里云邮箱短信验证和阿里云手机短信发送

    1:阿里云邮箱验证:service层 /***输入的格式是2060084769@qq.com* 阿里云邮箱验证* @param email* @param Code* @return*/@Overri ...

  2. [Android]手机短信验证功能

    介绍 短信验证功能大家都很熟悉了.在很多地方都能见到,注册新用户或者短息验证支付等.短信验证利用短信验证码来注册会员,大大降低了非法注册,很大程度上提高了用户账户的安全性. 目前市面上已经有了很多提供 ...

  3. 阿里云的短信验证功能实现

    阿里云的短信验证功能实现 第一步:申请 签名,模板,RAM访问控制 签名 模板 RAM访问控制 创建用户 创建完一定要保存 这个 截图里面的参数 这只能看一次 创建完成,添加授权 搜索 短信 添加 管 ...

  4. 使用腾讯云sms实现短信验证功能

    使用腾讯云sms实现短信验证功能 腾讯云短信免费试用:https://console.cloud.tencent.com/smsv2 腾讯云短信功能注册完成,并通过审批.就可以得到以下参数. Secr ...

  5. 短信服务之阿里云平台

    短信服务之阿里云短信平台 开通阿里云短信服务 集成到TP5框架 安装 使用 如果解决了你的疑问,麻烦点个赞吧,当然也不介意您关注收藏下的呢 开通阿里云短信服务 登录阿里云进入控制台 产品与服务–> ...

  6. 手机短信验证功能实现

    手机短信验证功能实现 1首先要注册阿里云账号 注册地址 :http://click.aliyun.com/se/766441/ 2 登录账号在全部导航 - 产品 - 云通讯 - 短信服务 -控制台 3 ...

  7. 利用第三方服务平台实现简单的短信验证功能

    在本篇文章中,将会利用第三方服务平台实现短信验证功能. 首先,先介绍一下刚才提及的第三方服务平台:mob.com 移动开发者服务平台 该平台呢,主要有以下几点功能: 1.为IOS.Android的AP ...

  8. 小程序实现手机短信验证功能

    小程序实现手机短信验证功能 废话不多说,直接把项目写的手机短信验证功能发出来 .wxml <form bindsubmit="phone"> <input typ ...

  9. Android实现短信验证功能(功能的使用)

    上一篇我们实现了短信验证功能的前期准备的工作,这篇我们就详细的来介绍如何实现利用手机号完成注册 如何没有做准备工作的,请参看上一篇,开始前的准备:http://blog.csdn.net/u01169 ...

最新文章

  1. 219个opencv常用函数汇总
  2. EMQ学习 ---集群
  3. OpenCV GPU 简单遍历图像
  4. 【计算机算法设计与分析】——排序
  5. nginx php-fpm 下的php.ini在哪里
  6. 买下千万美元豪宅的库克 在周日获得了价值3600万美元股票
  7. 数组作为方法的返回值
  8. SQL 个人所学目录
  9. Matlab 图像像素点在RGB空间的显示
  10. 如何用电脑录制视频?图文教学,快速学会
  11. css div背景图大小,divcss如何改变背景图片大小
  12. 项目管理 - 团队成员无法按期完成任务怎么办?
  13. Excel表格每页都打印表头
  14. 4.12 使用反相命令反转图片色彩 [原创Ps教程]
  15. matlab 零速检测,一种基于车辆零速检测的惯性导航误差修正方法与流程
  16. 【论文阅读】DeepGauge: multi-granularity testing criteria for deep learning systems.
  17. Spring中Bean及@Bean的理解
  18. Google Code Jam 2014 -- C
  19. 供应商管理软件如何选型 好用的供应商管理软件推荐
  20. 百科不全书之Python网络爬虫1

热门文章

  1. Java 数组在内存中的存储 数组的常见操作
  2. linux cd 命令详解,linux cd 命令详解
  3. oracle 尖括号_关于方括号和尖括号的区别
  4. c++ memset 语言_c++ memset
  5. ❤️创意网页:贪吃蛇游戏 - 创造一个经典的小游戏
  6. IPOPT工具解决非线性规划最优化问题使用案例
  7. android 短信验证码自动填写的两种方式
  8. Linux通过ifconfig命令ens33没有显示ip地址解决方式
  9. 计算广告、推荐系统论文以及DSP综述
  10. 根据真实数据计算一段时间内价格走势,echarts折线图数据补全方法。