中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

詳解Java阿里云如何實現短信驗證碼

發布時間:2020-07-20 15:25:47 來源:億速云 閱讀:681 作者:小豬 欄目:編程語言

小編這次要給大家分享的是詳解Java阿里云如何實現短信驗證碼,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。

阿里云手機短信驗證

第一步 登錄阿里云開放平臺

1、進入阿里云開放平臺---->點擊控制臺

詳解Java阿里云如何實現短信驗證碼

2、點擊AccessKey管理

詳解Java阿里云如何實現短信驗證碼

3、點擊之后會彈出提示,選擇開始使用子用戶

詳解Java阿里云如何實現短信驗證碼

4、新建一個用戶組,然后按要求填寫即可

詳解Java阿里云如何實現短信驗證碼

詳解Java阿里云如何實現短信驗證碼

5、創建一個用戶,按要求填寫內容,勾選編程訪問

詳解Java阿里云如何實現短信驗證碼

詳解Java阿里云如何實現短信驗證碼

6、會得到AccessKey(id,密碼)

要將這個賬號保存下來!

//用戶登錄名稱 ====================
//AccessKey ID ====================
//AccessKey Secret ============================

第二步,開通阿里云短信服務

1、找到短信控制臺面板,點擊國內消息

詳解Java阿里云如何實現短信驗證碼

2、選擇模板管理,點擊添加模板

詳解Java阿里云如何實現短信驗證碼

以下內容按要求填寫即可,申請說明需要有正當理由不然審核可能通不過

詳解Java阿里云如何實現短信驗證碼

點擊提交,等待審核

3、步驟同上,點擊簽名管理,添加簽名

注:簽名需要填寫應用名稱、網站名稱 例如:(dy學習網站) 個人用戶選擇適用場景的時候選擇驗證碼,申請說明需要填寫正當理由。不然可能審核不通過。

詳解Java阿里云如何實現短信驗證碼

提交后等待審核通過即可。

第三步,編寫代碼測試

1、新建項目

創建一個Java項目,筆者創建的是SpringBoot項目

2、添加依賴

點擊快速學習——> 查看APIDemo,里面會有maven的依賴和官方的Demo

詳解Java阿里云如何實現短信驗證碼

maven依賴:

<dependency>
 <groupId>com.aliyun</groupId>
 <artifactId>aliyun-java-sdk-core</artifactId>
 <version>4.5.0</version>
</dependency>

3、編寫代碼

簡單測試,結合了redis的使用

controller:

package com.qxx.sendmessage.controller;

import com.qxx.sendmessage.service.SendMessage;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.util.StringUtils;
import org.springframework.web.bind.annotation.CrossOrigin;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.PathVariable;
import org.springframework.web.bind.annotation.RestController;

import java.util.HashMap;
import java.util.UUID;
import java.util.concurrent.TimeUnit;

/**
 * @author 東亞猛男Qxx
 */

@RestController
@CrossOrigin //跨域的支持
public class Controller {

  @Autowired
  private SendMessage sendMessage;
  @Autowired
  private RedisTemplate<String,String> template;

  //RestFul風格請求
  @GetMapping("/send/{phone}")
  public String send(@PathVariable("phone") String phone){
    //先看redis里面該手機號儲存的驗證碼是否失效
    String code = template.opsForValue().get(phone);
    if (!StringUtils.isEmpty(code)){
      return phone+":"+"驗證碼尚未過期!";
    }
    //截取6為字符當作驗證碼(UUID)
    code = UUID.randomUUID().toString().substring(0, 5);
    HashMap<String,Object> map = new HashMap<>();
    //key必須為code
    map.put("code",code);
    //調用service層的方法 傳兩個參數:phone,map
    Boolean flag = sendMessage.sendMessage(phone,map);
    if (flag){
      //存入redis,設置失效時間
      template.opsForValue().set(phone,code,5, TimeUnit.MINUTES);
      return phone+":"+"驗證碼"+code+"發送成功!";
    }
    return "發送失敗";
  }
}

service:

package com.qxx.sendmessage.service.impl;

import com.alibaba.fastjson.JSONObject;
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.qxx.sendmessage.service.SendMessage;
import org.springframework.stereotype.Service;

import java.util.HashMap;
import java.util.Map;

/**
 * @author 東亞猛男Qxx
 */
@Service
public class SendMessageImpl implements SendMessage {
  @Override
  public Boolean sendMessage(String phoneNum,Map<String, Object> map) {
    System.out.println(JSONObject.toJSONString(map));
    //連接阿里云,第一個參數不用改變,后兩個填寫自己的accessKeyId和accessSecret
    DefaultProfile profile = DefaultProfile.getProfile("cn-hangzhou", "<accessKeyId>", "<accessSecret>");
    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", phoneNum);
    request.putQueryParameter("SignName", "簽名");
    request.putQueryParameter("TemplateCode", "模板(SMS-*****)");
    //構建一個短信的驗證碼
    request.putQueryParameter("TemplateParam", JSONObject.toJSONString(map));
    try {
      CommonResponse response = client.getCommonResponse(request);
      System.out.println(response.getData());
      return response.getHttpResponse().isSuccess();
    } catch (ServerException e) {
      e.printStackTrace();
    } catch (ClientException e) {
      e.printStackTrace();
    }
    return false;
  }
}

4、測試

此處用的是postman工具

詳解Java阿里云如何實現短信驗證碼

redis:

詳解Java阿里云如何實現短信驗證碼

短信:

詳解Java阿里云如何實現短信驗證碼

看完這篇關于詳解Java阿里云如何實現短信驗證碼的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

邯郸县| 岳普湖县| 谢通门县| 太仆寺旗| 杭锦后旗| 平度市| 青岛市| 阳曲县| 黄大仙区| 永州市| 镶黄旗| 获嘉县| 墨玉县| 司法| 济源市| 锦屏县| 如皋市| 舞阳县| 鄄城县| 会理县| 武鸣县| 天柱县| 凤凰县| 夏津县| 丹江口市| 福建省| 寻乌县| 内黄县| 灵石县| 潞城市| 武强县| 镇宁| 西华县| 双城市| 洛浦县| 望城县| 集安市| 合阳县| 庐江县| 台南县| 湖北省|