自己动手整合阿里云的短信验证码
程序员文章站
2022-05-18 17:43:27
我们来调通一下发送验证码到手机,这就是一个第三方服务mall-third-party(短信服务)阿里云上面有免费使用的发送短信验证码如下,开通即可https://free.aliyun.com/product/cloudcommunication-free-trial?spm=5176.12901015.0.i12901015.729e525colmSdi开通完出现如下页面在阿里云控制台中注意一点:我们前端点击发送验证码,不可以直接到第三方服务(短信服务)里面,必须先通过我们的微服务,在让微服务发...
我们来调通一下发送验证码到手机,这就是一个第三方服务mall-third-party(短信服务)
阿里云上面有免费使用的发送短信验证码如下,开通即可
https://free.aliyun.com/product/cloudcommunication-free-trial?spm=5176.12901015.0.i12901015.729e525colmSdi
开通完出现如下页面在阿里云控制台中
注意一点:我们前端点击发送验证码,不可以直接到第三方服务(短信服务)里面,必须先通过我们的微服务,在让微服务发送请求给第三方服务(短信服务),目的:防止我们的阿里云账号密码泄露
操作步骤:根据官网进行
添加链接描述
第一步:引入依赖aliyun-java-sdk-core
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.5.3</version>
</dependency>
第二步:我们要现在如下的在线测试中进行测试,找到正确的代码,然后放入到mall-third-party中进行单元测试
阿里云短信服务APIDemo
mall-third-party
@Component
public class SmsComponent {
@Autowired
SMSConfigProperties smsConfigProperties;
public void sendSmsCode(String phone, String code) {
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou",smsConfigProperties.getAccessKeyId() , smsConfigProperties.getAccessSecret());
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("RegionId", "cn-hangzhou");
request.putQueryParameter("PhoneNumbers", phone);
request.putQueryParameter("SignName", smsConfigProperties.getSignName());
request.putQueryParameter("TemplateCode", smsConfigProperties.getTemplateCode());
request.putQueryParameter("TemplateParam", "{\"code\":\""+code+"\"}");
try {
CommonResponse response = client.getCommonResponse(request);
System.out.println(response.getData());
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
}
}
<dependency>
<groupId>org.springframework.boot</groupId>
<artifactId>spring-boot-configuration-processor</artifactId>
<optional>true</optional>
</dependency>
@ConfigurationProperties(prefix = "mall.auth.sms")
@Data
@Component
public class SMSConfigProperties {
private String accessKeyId;
private String accessSecret;
private String SignName;
private String TemplateCode;
}
mall.auth.sms.access-secret=access-secret(阿里云账户的secret)
mall.auth.sms.access-key-id=access-key-id(阿里云账户的key-id)
mall.auth.sms.sign-name=阿俊商城
mall.auth.sms.template-code=SMS_205455193
第三步进行测试:如果我们调试结果有错可以使用阿里云 OpenAPI 使用诊断 内
阿里云 OpenAPI 使用诊断
@Autowired
SmsComponent smsComponent;
@Test
void contextLoads() {
smsComponent.sendSmsCode("自己的电话号码","1111");
}
{"Message":"OK","RequestId":"0627E6D4-6F5A-49F4-8FA6-EDEF581DE2A9","BizId":"507116005111507742^0","Code":"OK"}
并且你的手机号码中会有你对应的短信验证码,我的就是1111
注意如果报如下错误
{"Message":"没有访问权限","RequestId":"B5CC6453-DFEB-44F5-BE3A-780408553C85","Code":"isp.RAM_PERMISSION_DENY"}
AliyunDysmsFullAccess(管理权限)
我们要进行如下配置,打开对应的用户的访问权限AliyunDysmsFullAccess
本文地址:https://blog.csdn.net/qq_44891295/article/details/109634788
上一篇: Java中锁的四种状态以及锁升级过程
下一篇: IO流拆分以及合并文件