您好,登錄后才能下訂單哦!
小編這次要給大家分享的是詳解Java阿里云如何實現短信驗證碼,文章內容豐富,感興趣的小伙伴可以來了解一下,希望大家閱讀完這篇文章之后能夠有所收獲。
阿里云手機短信驗證碼
第一步 登錄阿里云開放平臺
1、進入阿里云開放平臺---->點擊控制臺
2、點擊AccessKey管理
3、點擊之后會彈出提示,選擇開始使用子用戶
4、新建一個用戶組,然后按要求填寫即可
5、創建一個用戶,按要求填寫內容,勾選編程訪問
6、會得到AccessKey(id,密碼)
要將這個賬號保存下來!
//用戶登錄名稱 ==================== //AccessKey ID ==================== //AccessKey Secret ============================
第二步,開通阿里云短信服務
1、找到短信控制臺面板,點擊國內消息
2、選擇模板管理,點擊添加模板
以下內容按要求填寫即可,申請說明需要有正當理由不然審核可能通不過
點擊提交,等待審核
3、步驟同上,點擊簽名管理,添加簽名
注:簽名需要填寫應用名稱、網站名稱 例如:(dy學習網站) 個人用戶選擇適用場景的時候選擇驗證碼,申請說明需要填寫正當理由。不然可能審核不通過。
提交后等待審核通過即可。
第三步,編寫代碼測試
1、新建項目
創建一個Java項目,筆者創建的是SpringBoot項目
2、添加依賴
點擊快速學習——> 查看APIDemo,里面會有maven的依賴和官方的Demo
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工具
redis:
短信:
看完這篇關于詳解Java阿里云如何實現短信驗證碼的文章,如果覺得文章內容寫得不錯的話,可以把它分享出去給更多人看到。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。