-
[Spring Boot] - 초간단 휴대폰 인증 기능 구현 (coolsms-건당20원)Spring 2024. 6. 14. 19:48반응형
Spring Boot로 휴대폰 인증 기능 구현하기 with coolsms
sms전송관련 하여 사이트들을 둘러보다가 저렴한 사이트를 발견했다. 문자발송 한 건당 20원!!
최초 회원가입을 한다면 300P가 주어진다. 최초 15건은 무료이다!
세상에서 가장 안정적이고 빠른 메시지 발송 플랫폼 - 쿨에스엠에스
손쉬운 결제 전용계좌, 신용카드, 계좌이체 등 국내 결제 뿐만 아니라 해용신용카드로 한번의 카드번호 등록으로 자동충전까지 지원합니다. 전용계좌, 신용카드, 계좌이체 등 다양한 결제 방식
coolsms.co.kr
1. 가입후 상단 메뉴에서 개발/연동 -> API Key관리 클릭
2. 새로운 API Key 만들기
3. 발급받은 API KEY, SECRET 키 저장해두기
다른 블로그들을 둘러보니 대부분 이렇게 의존성을 주입해준다.
dependencies { // 다른 의존성들... compile group: 'net.nurigo', name: 'javaSDK', version: '2.2' }
대충 이러한 오류와 version문제가 발생하였다. 찾아보니 Gradle 버전 7.0 이후부터 compile 메소드가 더 이상 사용되지 않으며, 대신 implementation 또는 api를 사용하여 의존성을 추가해야 합니다. 따라서 build.gradle 파일에서 다음과 같이 수정해야 한다고 했다. Gradle버전들을 잘 확인하고 주입하자!
A problem occurred evaluating root project ''. > Could not find method compile() for arguments [{group=net.nurigo, name=javaSDK, version=2.2}] on object of type org.gradle.api.internal.artifacts.dsl.dependencies.DefaultDependencyHandler.
build.gralde
implementation group: 'net.nurigo', name: 'javaSDK', version: '2.2'
application.yml
coolsms: api: key: "발급받은 API KEY" secret: "발급받은 API SECRET" number: 01012345678
여기서 number는 발신인을 말한다. coolsms에서 가입한 번호를 넣어주면된다.
CoolSmsService
@Service public class CoolSmsService { @Value("${coolsms.api.key}") private String apiKey; @Value("${coolsms.api.secret}") private String apiSecret; @Value("${coolsms.api.number}") private String fromPhoneNumber; public String sendSms(String to) throws CoolsmsException { try { // 랜덤한 4자리 인증번호 생성 String numStr = generateRandomNumber(); Message coolsms = new Message(apiKey, apiSecret); // 생성자를 통해 API 키와 API 시크릿 전달 HashMap<String, String> params = new HashMap<>(); params.put("to", to); // 수신 전화번호 params.put("from", fromPhoneNumber); // 발신 전화번호 params.put("type", "sms"); params.put("text", "인증번호는 [" + numStr + "] 입니다."); // 메시지 전송 coolsms.send(params); return numStr; // 생성된 인증번호 반환 } catch (Exception e) { throw new CoolsmsException("Failed to send SMS", e); } } // 랜덤한 4자리 숫자 생성 메서드 private String generateRandomNumber() { Random rand = new Random(); StringBuilder numStr = new StringBuilder(); for (int i = 0; i < 4; i++) { numStr.append(rand.nextInt(10)); } return numStr.toString(); } }
SmsController
@RestController @RequestMapping("/api/sms") public class SmsController { @Autowired private CoolSmsService coolSmsService; @PostMapping("/send") public String sendSms(@RequestBody Map<String, String> body) { String phoneNumber = body.get("phoneNumber"); try { String generatedCode = coolSmsService.sendSms(phoneNumber); return "Generated verification code: " + generatedCode; } catch (CoolsmsException e) { e.printStackTrace(); return "Failed to send SMS: " + e.getMessage(); } } }
이와같이 코드를 모두 작성 한 뒤 PostMan으로 테스트를 해보았다.
{ "phoneNumber": "01012345678" }
초기에 설정하였던 (yml파일)Number로 부터 발송하고자하는 Number에게 발송이 된다.
물론 수신인 발송인 모두 나 자신으로 테스트를 하였다. 이를 활용하여 인증서비스에 활용해보자!
반응형'Spring' 카테고리의 다른 글
SpringBoot 초간단 엑셀 다운로드 기능 구현(Apache POI) (0) 2024.10.25 [Spring boot] - 소셜로그인(Naver,Google) + 일반로그인 구현 (0) 2024.07.23 [SpringBoot] - 구글, 네이버 소셜로그인 구현 설정 (0) 2024.07.23 [SpringBoot] - 소셜로그인작동 원리 (0) 2024.07.22 [SpringBoot] - 이메일 인증 기능 구현(구글 SMTP) (0) 2024.06.13