Springboot整合阿里云短信服务
目录
2.点击AccessKey管理,开通使用子用户AccessKey
来都来了点个赞在走呗🌹🌹🌹🌹🌹🌹🌹🌹
阿里云的官网地址为阿里云-计算,为了无法计算的价值
1.注册登录用户
? ? ? ? 这个地方注册用户应该就不需要过多的介绍了看一眼手机号注册也考研用支付宝淘宝扫描登录
2.点击AccessKey管理,开通使用子用户AccessKey
2.1点击进入AccessKey管理
2.2点击用户创建用户
2.3选择控制台创建
必须要选择控制台创建,其他的可以自己根据自己的喜好设定这都是没有问题的。
2.4权限修改
点击添加权限
这个地方我选择的是下面这些,因为想着偷一下懒所以选择了管理所有资源的权限
AliyunDysmsFullAccess | 管理短信服务(SMS)的权限 |
AliyunDysmsReadOnlyAccess | 只读访问短信服务(SMS)的权限 |
AdministratorAccess | 管理所有阿里云资源的权限 |
AliyunOSSFullAccess | 管理对象存储服务(OSS)权限 |
3.短信服务
开启短信服务
点击产品-->企业服务和云通信-->短信服务
?点击免费开通
按照自己想不想要完成新手测试使用
变量格式:${code};例如:您的验证码为 ${code} ,该验证码5分钟内有效,请勿泄露于他人。
4.创建Springboot项目使用SDK
以下是阿里云的短信服务的SDK官方文档地址:短信服务_SDK中心-阿里云OpenAPI开发者门户 (aliyun.com)
4.1创建一个springboot项目
选择一个springbootweb的依赖就可以了,因为后面我会用到springbootweb去做测试
4.2导入阿里云短信Maven依赖
Maven依赖:
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>dysmsapi20170525</artifactId>
<version>2.0.24</version>
</dependency>
4.3直接导入阿里云的测试代码
// This file is auto-generated, don't edit it. Thanks.
package com.ltx.messageservice;
import com.aliyun.tea.*;
public class Sample {
/**
* 使用AK&SK初始化账号Client
* @param accessKeyId
* @param accessKeySecret
* @return Client
* @throws Exception
*/
public static com.aliyun.dysmsapi20170525.Client createClient(String accessKeyId, String accessKeySecret) throws Exception {
com.aliyun.teaopenapi.models.Config config = new com.aliyun.teaopenapi.models.Config()
// 必填,您的 AccessKey ID
.setAccessKeyId(accessKeyId)
// 必填,您的 AccessKey Secret
.setAccessKeySecret(accessKeySecret);
// Endpoint 请参考 https://api.aliyun.com/product/Dysmsapi
config.endpoint = "dysmsapi.aliyuncs.com";
return new com.aliyun.dysmsapi20170525.Client(config);
}
public static void main(String[] args_) throws Exception {
java.util.List<String> args = java.util.Arrays.asList(args_);
// 请确保代码运行环境设置了环境变量 ALIBABA_CLOUD_ACCESS_KEY_ID 和 ALIBABA_CLOUD_ACCESS_KEY_SECRET。
// 工程代码泄露可能会导致 AccessKey 泄露,并威胁账号下所有资源的安全性。以下代码示例使用环境变量获取 AccessKey 的方式进行调用,仅供参考,建议使用更安全的 STS 方式,更多鉴权访问方式请参见:https://help.aliyun.com/document_detail/378657.html
com.aliyun.dysmsapi20170525.Client client = Sample.createClient(System.getenv("ALIBABA_CLOUD_ACCESS_KEY_ID"), System.getenv("ALIBABA_CLOUD_ACCESS_KEY_SECRET"));
com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest()
.setSignName("阿里云短信测试")
.setTemplateCode("SMS_154950909")
.setPhoneNumbers("183902xxxxx")//手机号写自己的
.setTemplateParam("{\"code\":\"1234\"}");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// 复制代码运行请自行打印 API 的返回值
client.sendSmsWithOptions(sendSmsRequest, runtime);
} catch (TeaException error) {
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}
4.4说明
上面的代码我们使用的是阿里云提供的短信发送模板,要是你想自定义模板也是可以的,你只需要去在快速入门那个地方看一下就可以自定义自己的专属模板了。
然后要注意到是,项目两个acceesskeyid和密码需要替换成你自己的
setAccessKeyId(accessKeyId) setAccessKeySecret(accessKeySecret)
?手机号也直接改成自己的就🆗啦
4.5直接测试
运行此主函数你的手机号就会收到如下短信
这个地方我们注意到的是验证码为什么是1234,因为我们在模板中定义的code替换使用的是1234,所以我们后续就要队这个地方进行一个随机的六位数字生成就可以了,然后把生成的六位数替换掉之前的1234.
5.简单的接口发送验证码
上面的代码中的createClient直接当成创建短信服务的客服端就可以了,我们只需要从前端获取用户手机号码,然后发送给对应手机号码短信就🆗啦。
package com.ltx.messageservice;
import com.aliyun.tea.TeaException;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import java.util.Random;
@RestController
public class messageTest {
@RequestMapping("/send/{phone}")
public void send (@PathVariable("phone") String phone) throws Exception {
com.aliyun.dysmsapi20170525.Client client = Sample.createClient(null,null);
//生成0-100000随机数,少位数前面补0
int RandomNum = new Random().nextInt(100000);
String sixDigitNum = String.format("%06d", RandomNum);
com.aliyun.dysmsapi20170525.models.SendSmsRequest sendSmsRequest = new com.aliyun.dysmsapi20170525.models.SendSmsRequest()
.setSignName("阿里云短信测试")
.setTemplateCode("SMS_154950909")
.setPhoneNumbers(phone)
.setTemplateParam("{\"code\":\""+sixDigitNum+"\"}");
com.aliyun.teautil.models.RuntimeOptions runtime = new com.aliyun.teautil.models.RuntimeOptions();
try {
// 复制代码运行请自行打印 API 的返回值
client.sendSmsWithOptions(sendSmsRequest, runtime);
} catch (TeaException error) {
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
} catch (Exception _error) {
TeaException error = new TeaException(_error.getMessage(), _error);
// 错误 message
System.out.println(error.getMessage());
// 诊断地址
System.out.println(error.getData().get("Recommend"));
com.aliyun.teautil.Common.assertAsString(error.message);
}
}
}
当前我们启动springboot的主启动类,然后再浏览器中输入localhost:8080/send/你的手机号
一秒不到的时间你的手机应该就会收到短信
在真正的实战中短信服务一般都是有一个过期时间的,这个过期时间我们可以通过redis设置字段的存活时间,最后判断验证码是否正确的时候从redis中取出对应手机号的验证码即可。这个地方我就补示范了大家可以自己去尝试一下~~~~~~~~~~~?
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。 如若内容造成侵权/违法违规/事实不符,请联系我的编程经验分享网邮箱:veading@qq.com进行投诉反馈,一经查实,立即删除!