Developing Myself Everyday
article thumbnail

 나는 현재 개인 프로젝트를 진행하고 있다. 그 중에서, 지금은 회원가입 기능을 구현하고 있다. 회원가입을 할 때 우리가 항상 하는 것이 바로 SMS 인증이다. 국내에는 현재 무료로 이용할 수 있는 SMS 인증을 지원하는 API가 여러가지 존재한다. 나는 간단하게 핸드폰으로 6자리 랜덤 문자를 보내고 인증을 받을 수 있는 기능을 구현하고 싶어 여러가지 API들을 찾아보았다. 그런데 생각보다 관련 정보가 많이 없어서 이 블로그를 통해 나와 같은 고민이 있는 사람에게 도움이 되었으면 좋겠다는 생각에 글을 작성한다.

 

 나는 직접적으로 SMS 인증을 지원하는 API를 사용하지 않고 간단하게 구현을 하려고 하였다. 그래서 SMS를 보낼 수 있는 API인 네이버 SENS를 사용해서 SMS 인증 기능을 구현하였다.

 

 

시작하기


 우리가 원하는 기능을 구현하기 위해서 가장 먼저 해야할 것은 'NAVER CLOUD PLATFORM' 에 회원가입을 하는 것이다. 나는 회원가입을 다 완료했다고 가정하고 설명을 시작하겠다. 

 

1) NAVER CLOUD PLATFORM에 로그인 한 다음 콘솔에 들어간다. 그 다음 아래에 빨간색으로 표시를 해놓은 'Simple & Easy Notification Service'에 들어간다.

 

2) SENS에 들어간 다음 'Project' 탭에서 프로젝트를 생성한다. 그리고 나중에 다시 돌아와서 찾아도 되지만 서비스 ID를 메모해 둔다. (나중에 필요하다)

3) 'SMS' - 'Calling Numer' 탭에 들어간다. 그 다음 발신번호를 등록한다. 나중에 이 발신번호로 SMS가 발송되게 된다.

 

4) 다시 NAVER CLOUD PLATFORM에 돌아온 다음 '마이페이지' - '인증키 관리' 에 들어간다. 그리고 신규 API 인증키를 생성한다. 이때 생성된 인증키의 'Access Key ID' 와 'Secret Key' 를 메모해논다.

 

 

 

Dataclass 만들기


 API는 데이터를 다루는 과정이다. 우리가 사용할 SMS API는 JSON 형식을 지원하기 때문에 이에 맞는 데이터클래스를 정의해줘야 한다. 데이터클래스를 하나하나 정의할 수도 있다. 그런데 요즘이 어떤 시대인가 너무나도 간단하게 데이터클래스를 정의할 수 있다.

 

 

open API의 Json 데이터를 data class로 만들기 : Json to Kotlin class

Open api를 사용하여 json 데이터를 원하는 형태로 파싱하려면 그에 맞는 data class를 만들어줘야할 때가 있습니다.분명 Koltin이 Java에 비해 코드량을 현저히 줄여주었음에도 클래스를 새로 작성하는

velog.io

 

 위의 게시글에 자세히 나와 있으니 참고하길 바란다.

 

 우리는 아래의 문서에 들어가서 우리가 필요로 하는 Dataclass를 변환시킬것이다.

 

SMS API

 

api.ncloud-docs.com

위의 문서에 들어가게 되면 아래와 같은 요청, 응답 Body가 있을 것이다. 그 것들을 복사해서 Dataclass로 만들면 된다.

 

 

  요청 Body를 보게 되면 우리가 구현할 때 필요하지 않는 기능들도 있는 것을 확인할 수 있다. 그래서 나는 내가 필요한 기능만 사용하기 위해 Dataclass를 다음과 같이 수정하였다.

data class SMSRequest(
    val type: String,
    val contentType: String,
    val countryCode: String,
    val from: String,
    val content: String,
    val messages: List<Message>,
)
data class Message(
    val content: String,
    val to: String
)
data class SMSResponse(
    val requestId: String,
    val requestTime: String,
    val statusCode: String,
    val statusName: String
)

 

 다음 게시글에서 계속해서 진행해보도록 하겠다. 

 

 

[Android Studio] 네이버 SENS로 SMS 인증 기능 Retrofit 구현하기 with kotlin (2)

Retrofit Interface 작성 이제부터는 API를 사용하기 위한 Retrofit Interface를 작성하겠다. Retrofit에 대한 이해가 없다면 Retrofit에 대해 공부를 하고 다시 돌아오는 것이 좋을 수 있다. 당장 따라서 구현하

everyday-develop-myself.tistory.com

 

profile

Developing Myself Everyday

@배준형

포스팅이 좋았다면 "좋아요❤️" 또는 "구독👍🏻" 해주세요!