简要说明:在开发软件时涉及登录注册,我们想实现手机验证码注册,这里以调用阿里云短信服务,使用androidstdio java语言为例
一、申请短信服务
1.进入阿里云平台,选择短信服务
2.申请签名
3.申请模版
注:上述两个过程可以在系统提示下用手机钉钉进行申请,每次审核需要一两个小时;
4.在个人信息那个获取用户密钥,用于访问阿里云API
二、代码实现
1.选择快速学习使用,点击调用API发送,跳转界面
2.选择你需要使用的代码示例,这里我选java
3.根据你申请的签名模版和密钥修改代码参数即可
三、安卓测试
注:安卓中需要在线程里执行此操作
1.需要导入阿里云相关sdk包,如:
implementation(files("libs\\alipay-sdk-java20170324180803.jar")) implementation(files("libs\\aliyun-java-sdk-core-3.3.1.jar")) implementation(files("libs\\aliyun-java-sdk-dysmsapi-1.0.0.jar")) implementation(files("libs\\alipay-sdk-java20170324180803-source.jar"))
2.实现一个发送验证码的类
//导入阿里云短信服务SDK
import com.aliyun.auth.credentials.Credential;
import com.aliyun.auth.credentials.provider.StaticCredentialProvider;
import com.aliyun.sdk.service.dysmsapi20170525.models.*;
import com.aliyun.sdk.service.dysmsapi20170525.*;
import com.google.gson.Gson;
import darabonba.core.client.ClientOverrideConfiguration;
import java.util.concurrent.CompletableFuture;
import java.util.concurrent.ExecutionException;
//导入随机数生成函数库
import java.util.Random;
//线程实现短信验证码的请求发送
public class SendSms extends Thread{
private String code;
private String phoneNumber;
public void setPhoneNumber(String phoneNumber,String code)
{
this.phoneNumber = phoneNumber;
this.code = code;
}
//线程主体
public void run() {
try {
StaticCredentialProvider provider = StaticCredentialProvider.create(Credential.builder()
.accessKeyId("填自己的")//你的密钥
.accessKeySecret("填自己的")
.build());
AsyncClient client = AsyncClient.builder()
.region("cn-beijing")
.credentialsProvider(provider)
.overrideConfiguration(
ClientOverrideConfiguration.create()
.setEndpointOverride("dysmsapi.aliyuncs.com")
)
.build();
SendSmsRequest sendSmsRequest = SendSmsRequest.builder()
.signName("填自己的")//短信签名
.templateCode("填自己的")//短信模版
.phoneNumbers(this.phoneNumber)//测试手机号
.templateParam("{\"code\":\""+this.code+"\"}")//验证码
.build();
CompletableFuture<SendSmsResponse> response = client.sendSms(sendSmsRequest);
SendSmsResponse resp = response.get();
System.out.println(new Gson().toJson(resp));
client.close();
} catch (ExecutionException e) {
throw new RuntimeException(e);
} catch (InterruptedException e) {
throw new RuntimeException(e);
}
}
}
3.调用此类即可
四、最后说明
1.短信中的验证码数字自己设置,可以自己写一个生成指定位的随机数函数,即随机验证码;
2.记得给自己阿里云账户充几块钱,发一次短信要扣一点点费用,当然也有免费的如MobTech实现验证码注册,但是我写安卓的时候,选择的安卓版本太新了,那个官方提供的代码不适用了,又不想改安卓配置了,就改用阿里云了;
3.程序简单逻辑:用户点击注册进入注册页面,用户输入手机号,账号密码,点击获取验证码,调用你实现的类发送随机验证码给用户,用户输入验证码后,验证验证码是否正确,正确的话把用户填写的账号密码信息存入服务器数据库账户表中;
4.对于把账户信息存入服务器数据库可以参考我的另一篇文章:架设阿里云服务器及数据库;
5.不同开发平台,不同语言,阿里云都给出了模版,你需要做的就是导入包修改参数(签名,模版和密钥)即可,整体框架是确定的;