한국번호가 아닌 사람에게 문자를 전송해야 하는 부분이 개발되어야 하는 일이 생겼다.
기존에는 휴대폰 인증 서비스로 kcb문자 인증 서비스를 사용하는 중이였는데
일단 외국번호로 전송이 가능한지를 메일로 문의했었다.
휴대폰인증을 위해 인증번호를 전송해야 했기 때문에 문자 전송서비스를 따로 만들수 밖에 없었다.
이것저것 찾아보다가 Twilio라는 외국 사이트에서 문자서비스 및 다양한 서비스를 제공하고있었다.
일단 회원가입부터 진행하자. 참고로 naver메일로는 가입이 안된다고 해서 gmail로 가입했다.
회원가입 후 결제 카드를 등록하고나면 SID와 TOKEN을 부여받게 된다.
등록 이후에는
https://www.twilio.com/console/sms/settings/geo-permissions
여기로 이동해서 permission체크를 모두 해줘야 한다.
저 설정을 해주지 않으면 설정하지 않은 국가로는 문자 전송이 안된다.
준비는 끝났고 이제 코딩만 하면된다. 매우매우 간단하다.👍
일단 pom.xml에 라이브러리를 추가해주자.
<!-- twilio -->
<dependency>
<groupId>com.twilio.sdk</groupId>
<artifactId>twilio</artifactId>
<version>7.38.1</version>
</dependency>
추가해주고 나서 예제를 돌리는데 에러가 발생해서 찾아봤더니
httpclient랑 httpcore 라이브러리가 없어서 에러가 나길래그 둘도 추가해주었다.
<!-- httpclient -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpclient</artifactId>
<version>4.5.8</version>
</dependency>
<!-- httpcore -->
<dependency>
<groupId>org.apache.httpcomponents</groupId>
<artifactId>httpcore</artifactId>
<version>4.4.10</version>
</dependency>
그리고 문자 전송을 위한 클래스를 구현해준다.
public class SendSMSTwilio {
// Find your Account Sid and Token at twilio.com/user/account
public static final String ACCOUNT_SID = "발급받은 SID";
public static final String AUTH_TOKEN = "발급받은 TOKEN";
// SMS 전송
public static int sendSMS (String country, String phoneNum) {
Twilio.init(ACCOUNT_SID, AUTH_TOKEN);
// 휴대폰 인증번호 생성
int authNum = randomRange(100000, 999999);
// 전송대상 휴대폰 번호
String sendTarget = "+"+ country + phoneNum;
// 전송 메세지
String authMsg = "The authentication number is [" + authNum + "]" ;
Message message = Message.creator(
// to
new PhoneNumber(sendTarget),
// from
new PhoneNumber("Twilio에서 발급받은 번호"),
// message
authMsg).create();
return authNum;
}
// 인증번호 범위 지정
public static int randomRange(int n1, int n2) {
return (int) (Math.random() * (n2 - n1 + 1)) + n1;
}
}
인증번호 생성을 위한 randomRange메서드를 하나 만들어 주고
국가코드와 휴대폰번호를 입력받아서 전송해주는 sendSMS 메서드를 하나 구현해 주었다.
Twilio 사이트 내의 예제가 매우 간단하고 잘 되어있어서 크게 어려울게 없었다.
sendSMS에 국가코드와 휴대폰번호를 입력해주면
이와 같이 문자가 정상적으로 전송된다.
이를 활용해서 Controller단에서 sendSMS 메서드를 호출해서 인증번호를 리턴시켜준 뒤
이 후 입맛에 따라 인증에 따른 기타 절차들을 만들어 주면 된다.
여윽시 api가 체고시다..!👍
'Spring' 카테고리의 다른 글
[Spring] Spring loaded 이용하여 톰캣 재시작없이 반영하기 (0) | 2020.09.03 |
---|---|
[Spring]client IP 를 얻기 위한 X-Forwarded-For(XFF) http header (0) | 2020.01.09 |
[Spring] lombok library 를 활용한 Annotation (0) | 2019.12.05 |
[Spring] RestTemplate을 적용하여 CORS 이슈 해결 (0) | 2019.09.26 |
[Spring] Jsoup을 활용한 웹 크롤링 (0) | 2019.09.26 |