ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

阿里云短信集成(AccessKeyId和secret获取)

阿里云短信集成(AccessKeyId和secret获取) 代码实现1、新建springboot项目2、导入依赖!--导入阿里云短信依赖-- dependency groupIdcom.aliyun/groupId artifactIdaliyun-java-sdk-core/artifactId version4.5.25/version /dependency !--阿里json-- dependency groupIdcom.alibaba/groupId artifactIdfastjson/artifactId version1.1.41/version /dependency !--短信过期需要Redis-- dependency groupIdorg.springframework.boot/groupId artifactIdspring-boot-starter-data-redis/artifactId /dependency3、application.properties配置Redis注Redis服务需要启动server.port9090 spring.redis.host47.99.33.80 spring.redis.port63794、controller层package com.wt.controller; import com.aliyuncs.utils.StringUtils; import com.wt.service.SendSms; import io.netty.util.internal.StringUtil; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.data.redis.core.RedisTemplate; 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; RestController CrossOrigin //跨域支持 public class SmsApiController { Autowired private SendSms sendSms; Autowired private RedisTemplateString,String redisTemplate; GetMapping(/send/{phone}) public String code(PathVariable(phone)String phone){ //调用发送方法模拟真实业务Redis String code redisTemplate.opsForValue().get(phone); if(!StringUtils.isEmpty(code)){ return phone : code 已存在还没有过期; } //生成验证码并存储到Redis中 code UUID.randomUUID().toString().substring(0, 4); HashMapString,Object param new HashMap(); param.put(code,code); boolean isSuccess sendSms.send(phone, 阿里云申请的模板编码, param); if(isSuccess){ //保存至Redis并设置五分钟过期 redisTemplate.opsForValue().set(phone,code,5, TimeUnit.MINUTES); return 发送成功; }else { return 发送失败; } } }5、service和implpackage com.wt.service; import java.util.Map; public interface SendSms { boolean send(String phoneNum, String templateCode, MapString,Objectcode); }package com.wt.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.wt.service.SendSms; import org.springframework.stereotype.Service; import java.util.Map; Service public class SendSmsImpl implements SendSms { Override public boolean send(String phoneNum, String templateCode, MapString, Object code) { //连接阿里云 //accessKeyId:LTAI5tFgHDjZuP4FPNYGkBup //secret:stVsFWwWpBlqIHxpNPfAYnlJPAdSWD DefaultProfile profile DefaultProfile.getProfile(cn-hangzhou, LTAI5tFgHDjZuP4FPNYGkBup, stVsFWwWpBlqIHxpNPfAYnlJPAdSWD); IAcsClient client new DefaultAcsClient(profile); //构建请求 CommonRequest request new CommonRequest(); request.setSysMethod(MethodType.POST); request.setSysDomain(dysmsapi.aliyuncs.com); request.setSysVersion(2017-05-25); request.setSysAction(SendSms); //自定义参数手机号验证码签名模板 //需要发送的手机号 request.putQueryParameter(PhoneNumbers, phoneNum); //阿里云申请的签名名称(一般是固定签名) request.putQueryParameter(SignName, 阿里云申请的签名名称); //阿里云申请的模板编码 request.putQueryParameter(TemplateCode, templateCode); //验证码 request.putQueryParameter(TemplateParam, JSONObject.toJSONString(code)); try { CommonResponse response client.getCommonResponse(request); System.out.println(response.getData()); //成功返回成功 return response.getHttpResponse().isSuccess(); } catch (ServerException e) { e.printStackTrace(); } catch (ClientException e) { e.printStackTrace(); } //失败返回false return false; } }AccessKeyId和secret获取操作步骤使用阿里云账号登录 控制台。将鼠标置于页面右上方的账号图标单击AccessKey管理。在安全提示对话框选择使用阿里云账号AccessKey或RAM用户AccessKey。使用阿里云账号AccessKey单击继续使用AccessKey。在RAM访问控制页面单击创建AccessKey。获取验证码单击确定。在创建AccessKey对话框查看AccessKey ID和AccessKey Secret。可以单击下载CSV文件下载AccessKey信息。或者单击复制复制AccessKey信息。使用RAM用户AccessKey单击开始使用子用户AccessKey。系统自动跳转到 RAM控制台的用户页面找到需要获取AccessKey的RAM用户。说明如果没有RAM用户请先创建RAM用户详情请参见创建RAM用户。单击用户登录名称。在认证管理页签下的用户AccessKey区域单击创建AccessKey。获取验证码单击确定。在创建AccessKey页面查看AccessKey ID和AccessKey Secret。可以单击下载CSV文件下载AccessKey信息。或者单击复制复制AccessKey信息。
返回列表