欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

自己动手整合阿里云的短信验证码

程序员文章站 2022-12-20 18:56:56
我们来调通一下发送验证码到手机,这就是一个第三方服务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