这段时间准备做一个电商网站的小项目,在登录这方面,我想跟现在主流的登录想做成相似的功能,比如利用手机验证码登录,或者是扫描二维码登录,然后就在就在网站找了点资料今天来分享下,一来是给自己做个笔记,以后在想做类似的功能也方便点,再者如果有想做类似功能的可用参考我的方法,其实流程挺简单的,但是自己在上面走了点弯路,浪费了时间。
一、手机短信登录
1、首先需要找到一个短信服务的平台
我在做以前找了很多短信服务的平台,大部分平台都是需要有基本资金才可以开启短信服务的,但同时很多也是提供免费的实现机会差不多几十次到一百多次不等吧,我最后选择的是阿里云,虽然没有提供免费是机会,但是他是完全可以不需要订阅套餐可以按条计费 0.045元,一块钱就可以发二十多条,自己做项目测试是完全小意思的。
2、申请短信服务,加上设置短信模板和签名 以及获取到 accesskey的数据
额,这个不想多说,反正填写的时候最好稍微用点心
3、下载阿里云的jar包,以及gson包
在阿里上其实下载aliyun的SDK,我在网上看教程别人都是在Maven上配置的,我想在普通的web项目中配置,而且通过简单的实验也成功了,但是,我如果能获取到信息发送成功所返回的信息呢(json格式的字符串),我就想到了可以通过Gson进行解析,先开始导的是2.4的包,不行,我就感觉是版本问题,在网站下 2.7 2.8的包也都不行,程序还是报异常,我就在想是不是不仅仅是对Gson包的依赖,还需要别的包,我于是想通过Maven我可以配置它的坐标最后找出他所依赖的包。
对,就是这么多,但是一个包是那个的显眼,对,就是上面的那个gson包,他的版本是2.8.2的,如果我在重新导入这个gson包,完美解决,别的包也暂时不需要多管
4、实例演示
短信信息的实体类
package com.tk.utils;
public class Code {
private String Message;
private String RequestId;
private String BizId;
private String Code;
public String getMessage() {
return Message;
}
public void setMessage(String message) {
Message = message;
}
public String getRequestId() {
return RequestId;
}
public void setRequestId(String requestId) {
RequestId = requestId;
}
public String getBizId() {
return BizId;
}
public void setBizId(String bizId) {
BizId = bizId;
}
public String getCode() {
return Code;
}
public void setCode(String code) {
Code = code;
}
public String toString() {
return "Code [Message=" + Message + ", RequestId=" + RequestId
+ ", BizId=" + BizId + ", Code=" + Code + "]";
}
public Code(String message, String requestId, String bizId, String code) {
super();
Message = message;
RequestId = requestId;
BizId = bizId;
Code = code;
}
public Code() {
super();
}
}
发送短信的工具类(主要)
package com.tk.utils;
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.google.gson.Gson;
/**
* 发送短信的工具类
* @data :2019-4-26上午11:09:27
* @author :田坤
*/
public class SendUtils {
/**
* 发送短息
* @param phone 用户的电话号码
* @param phoneCode 随机生成的验证码
* @return
*/
public static String Sendnote(String phone,String phoneCode) {
Code code = null;
Gson gson = new Gson();
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "LTAI17FyEpL8t85J", "0fkgO4dDtZv4L5UYFFW5uEEDhV11y7");
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();
//request.setProtocol(ProtocolType.HTTPS);
request.setMethod(MethodType.POST);
request.setDomain("dysmsapi.aliyuncs.com");
request.setVersion("2017-05-25");
request.setAction("SendSms");
request.putQueryParameter("RegionId", "cn-hangzhou");
//要发生给的用户的电话号码
request.putQueryParameter("PhoneNumbers", phone);
//申请的短信签名
request.putQueryParameter("SignName", "阿普商城");
//申请的短信模板
request.putQueryParameter("TemplateCode", "SMS_164267218");
//给用户发送的验证码
request.putQueryParameter("TemplateParam", "{\"code\":\""+phoneCode+"\"}");
request.putQueryParameter("SmsUpExtendCode", "9999");
try {
CommonResponse response = client.getCommonResponse(request);
//将响应返回的json数据的字符串转化成java实体(Code类)
code = (Code) gson.fromJson(response.getData(),com.tk.utils.Code.class);
System.out.println(code.toString());
System.out.println(code.getMessage());
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
return code.getMessage();
}
}