sms 문자 인증이 내 블로그 첫 기록이 될 거라고는 생각도 못 했다.
미루고 미루던 블로그 앞으로 열심히 써야지.
회원가입을 하기 위해서는 본인인증을 필수로 해야 하는데 여러 가지 방법들 중 이메일로 인증 메일 보내기는 이미 한번 경험했고, 예약 관리 앱을 만들고 있었기 때문에 문자 인증을 선택했다.
문자 인증 API 서비스를 찾아보다가 제일 마음에 드는 사이트를 발견했다.
coolSMS : https://coolsms.co.kr/
Spring과 무료로 연동 가능하다는 게 제일 큰 장점이었다.
처음 가입을 하게 되면 본인인증 후 API 키를 발급받게 된다.
이때 문제가 하나 생기는데,, 난 대표번호가 없다는 것!
개인번호를 대표번호로 등록해도 되지만 괜히 불안하고 걱정되는 마음에 번호를 하나 구하자 결정하고 열심히 조사해봤지만 비용이 만만치 않았고,, 죄송한 말이지만 좀 사기당하는 느낌이었다.
결국 이메일로 본인인증을 해야 하는 걸까 포기하기 직전에 좋은 앱을 발견했다.
아톡 : http://atalk.co.kr/
앱을 다운로드한 후 회원가입을 하게 되면 매달 2000원정도만 지불하고 070으로 시작하는 번호들 중에 마음에 드는 걸 골라 사용할 수 있게 된다.
아 처음에 무료로 포인트를 조금 주는데 테스트용으로는 충분하다.
링크 타고 나오는 페이지에서 원하는 기능을 선택 후 코드를 복사해가기만 하면 끝인데
난 SMS 단문문자를 사용했다.
public class MessageService {
@Value("${coolsms.devHee.apikey}")
private String apiKey;
@Value("${coolsms.devHee.apisecret}")
private String apiSecret;
@Value("${coolsms.devHee.fromnumber}")
private String fromNumber;
public void sendMessage(String toNumber, String randomNumber) {
Message coolsms = new Message(apiKey, apiSecret);
HashMap<String, String> params = new HashMap<String, String>();
params.put("to", toNumber);
params.put("from", fromNumber);
params.put("type", "SMS");
params.put("text", "[grabMe] 인증번호 "+randomNumber+" 를 입력하세요.");
params.put("app_version", "test app 1.2"); // application name and version
try {
JSONObject obj = (JSONObject) coolsms.send(params);
System.out.println(obj.toString());
} catch (CoolsmsException e) {
System.out.println(e.getMessage());
System.out.println(e.getCode());
}
}
}
보안상 apikey, apisecret, fromnumber는 다른 파일로 분리해서 사용했다.
서비스 파일로 만들어 놓은 후 컨트롤러에서 인증번호를 보내야 할 때 실행시켜주면 된다.
messageService.sendMessage(userPhone, cn);
userPhone : 인증문자를 받을 휴대폰 번호
cn : 랜덤으로 제작한 네자리수의 인증번호
문자는 정상적으로 잘 도착한다.
문자 인증만 개발하시는거라면 https://www.oauth.network/
한번 보시면 좋을것 같습니다. 월 300건 무료이며
다른 점은 인증 방식이 사용자가 문자를 전송해서 인증하는 방식입니다.
한번 보낼때 20원정도 드는데 유료로 사용하고 계신가요?