**
ユーザーがテキストメッセージを送信するためにアカウントを登録するには任意のソフトウェアの必要性、電話番号を入力するにはログインし、携帯電話は、登録のために電話番号だけでなく、着陸および電話番号に関連付けられた後、スキャンコードを取得するための許可を得る必要があり、また、そのようなQQ、シーナなどのサードパーティに関連付けられていますマイクロブログの場合、有料ボラのログイン、いずれかの方法は、電話番号の複数のアカウントを避けるために、あなたの携帯電話をフォローアップすることです
**
今日では、何気なく、いくつかの簡単な登録・ログインコードを書きます
登録、その後、携帯電話2つ以下のボタン、テキストメッセージを送信するために1、登録まで
登録プロセス:
テキストメッセージを送信するためにユーザーがクリックし、受信舞台裏では、フロントデスクの電話番号の上を通過した後、電話番号にテキストメッセージを送信し、現在、アリ、IFLYTEKより大きいとして、携帯電話番号に多くのテキストメッセージを送信するために、サードパーティ、ちょうど最初のを見つけます三者缶を、料金ですが、テストは、今日のNaアリの例よりも大きくなるように、いくつかの無料となります
アリは、アプリケーションキーをログインし、アカウントを登録し、その後、おそらくコードの下に、変更の下にSDKをダウンロード
まず、追加の依存関係は、パッケージが直接jarファイルをダウンロードすることができ、企業は基本的にMavenを使用している、あなたは直接の導入に頼ることができます
<dependency>
<groupId>com.aliyun</groupId>
<artifactId>aliyun-java-sdk-core</artifactId>
<version>4.1.0</version>
</dependency>
そして、テキストメッセージを送信する方法を書きます
/**
* 发送短信
*
* @param phone
* 手机号
*/
public static String send(String phone, String rodom) {
// 第二个参数为自己独有的accessKeyid,第三个参数为自己独有的accessKeySecret
DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "AAAAA", "BBBBBB");
IAcsClient client = new DefaultAcsClient(profile);
CommonRequest request = new CommonRequest();// 组装请求对象
// request.setProtocol(ProtocolType.HTTPS);
request.setMethod(MethodType.POST);// 设置post提交
request.setDomain("dysmsapi.aliyuncs.com");// 短信API产品域名(接口地址固定,无需修改)
request.setVersion("2017-05-25");
request.setAction("SendSms");
request.putQueryParameter("RegionId", "cn-hangzhou");
request.putQueryParameter("PhoneNumbers", phone);
request.putQueryParameter("SignName", "就是短信方括号里面的那个名字");// 短信签名
request.putQueryParameter("TemplateCode", "SMS_162731312");
request.putQueryParameter("TemplateParam", "{code:" + rodom + "}");
try {
CommonResponse response = client.getCommonResponse(request);
return response.getData();
} catch (ServerException e) {
e.printStackTrace();
} catch (ClientException e) {
e.printStackTrace();
}
return null;
}
次に、乱数生成方法を記述6
// 生成6位随机数
public static String createRodom() {
Random random = new Random();
String result = "";
for (int i = 0; i < 6; i++) {
result += random.nextInt(10);
}
return result;
}
両方のインターフェイスは十分にバックグラウンドであるべきです
/**
* 发送短信接口
*
* @param request
* @param number
* @return
*/
@RequestMapping("/sendSms")
@ResponseBody
public ReturnT<String> sendSms(HttpServletRequest request, String number) {
try {
// 生成6位验证码
String rodom = Sms.createRodom();
// 发送短信
// TODO
// Sms.send(number, rodom);
// 将认证码存入SESSION
request.getSession().setAttribute("verifyCode", rodom);
request.getSession().setAttribute("createTime", System.currentTimeMillis());
return ReturnT.SUCCESS;
} catch (Exception e) {
e.printStackTrace();
}
return null;
}
/**
* 验证验证码是否正确
*
* @param request
* @param verifyCode
* @return
*/
@RequestMapping("/cheakSms")
@ResponseBody
public ReturnT<String> cheakSms(HttpServletRequest request, String phone, String password, String verifyCode) {
String code = (String) request.getSession().getAttribute("verifyCode");
long time = (long) request.getSession().getAttribute("createTime");
// 验证码不为空时,到后台进行比较,返回响应码,
// 为0,提示成功
// 为1,提示请先获得验证码
// 为2,提示验证码错误
// 为3,验证码超时
// 为4,该手机号已注册
if (verifyCode == null) {
return new ReturnT<String>(1, "请先获得验证码");
} else if (verifyCode.equals(code)) {
SysUser user = new SysUser();
user.setLoginName(phone);
ReturnT<SysUser> returnT = sysUserService.selectSysUser(user);
if (returnT == null && "".equals(returnT)) {
if (System.currentTimeMillis() - time > 600000) {
return new ReturnT<String>(3, "验证码超时");
} else {
// 注册成功,存储用户中心,salt默认为123456
String hex = DigestUtils.md5Hex(phone + password + "123456");
SysUser sysUser = new SysUser();
sysUser.setLoginName(phone);
sysUser.setPassword(hex);
sysUser.setSalt("123456");
sysUserService.save(sysUser);
return new ReturnT<String>(0, "注册成功");
}
} else {
return new ReturnT<String>(2, "验证码错误");
}
} else {
return new ReturnT<String>(4, "该手机号已注册");
}
}
登録は、のような判断の下に1、または認証コードずつがいずれか、空または正しくない登録またはタイムアウトした、コードをショート・メッセージ・インターフェース、フロントデスクのチェックSMS確認コードを入力し、さらにいくつかのケースよりも何を置きますそんなに
テキストメッセージは、マニュアルの検証コードを見てオーバー送信したためその後、それをテストを開始