注册的时候或者什么时候,可以使用短信验证码,记录一下阿里短信的使用
1. 登录阿里云后先给自己的账户充值
阔气的大手一挥,充他个2块钱
2. 设置一些必要的东西
查看阿里云官方的使用文档,跟着步骤来即可,虽然看起来很复杂
主要需要的东西包括
AccessKey ID
AccessKey SECRET
签名
模版CODE
AccessKey SECRET只有在创建的第一次可以看到,记得记录下来,错过了就要再创建一个,提醒一下,虽然创建只需要点一下鼠标。
3. Java SDK使用
官网的文档也写得很详细了
- maven依赖
1 2 3 4 5
| <dependency> <groupId>com.aliyun</groupId> <artifactId>aliyun-java-sdk-core</artifactId> <version>4.5.3</version> </dependency>
|
- 代码就直接从官网生成的模板拉下来就可以运行了
- 由于真正使用的时候电话号码是用户填写的,验证码是随机生成的,签名和模板不一定都只使用一套,总之,不能写死。写一个Util工具类,用参数的方式传进去,只需要替换成自己的accessKeyId和accessKeySecret就可以使用了
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34
| public class SmsUtils
//产品名称:云通信短信API产品,开发者无需替换 static final String product = "Dysmsapi"; static final String domain = "dysmsapi.aliyuncs.com";
static final Logger logger = LoggerFactory.getLogger(SmsUtils.class);
public CommonResponse sendSms(String phone, String code, String signName, String template) throws ClientException {
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "替换成你的accessKeyId", "替换成你的accessKeySecret"); 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", signName); request.putQueryParameter("TemplateCode", template); request.putQueryParameter("TemplateParam", "{\"code\":\"" + code + "\"}"); request.putQueryParameter("OutId", "suibian123");
CommonResponse response = client.getCommonResponse(request);
logger.info("发送短信状态:{}", response.getHttpStatus()); logger.info("发送短信消息:{}", response.getData());
return response; } }
|
当然,accessKeyId和accessKeySecret也可以不写死,通过properties或yml文件来读取,那就最好了,不展开了
最后上效果图