안드로이드 네이버 로그인 구현 예제

안드로이드 블로그

에이전시 회사에서 일하는 안드로이드 개발자로서 무수히 많은 sns로그인을 구현한다.

안드로이드 네이버 로그인 구현 예제를 하나 소개한다.

1. 네이버 개발자 센터에 앱 등록하기

 

네이버 개발자센터 앱 등록

네이버 개발자 센터에 들어가서 상위메뉴에 Application - 애플리케이션등록 클릭

애플리케이션 이름 작성하고 사용API에 네이버로그인 선택.


안드로이드 네이버 로그인 구현

☝ 네이버 로그인에서 필요한 정보를 선택한다.

나의 경우에는 그냥 인증할 때만 사용해서 체크 안하겠다.


안드로이드 네아로 구현

☝ 다운로드 URL과 패키지이름을 적어준다.

다운로드 URL 형식은 "https://play.google.com/store/apps/details?id=패키지이름" 이다.

둘 다 적어줬으면 아래 등록하기 버튼을 클릭해준다.


안드로이드 네아로 구현 예제

☝ 상위메뉴에 Application - 내 애플리케이션에 들어가보면 앱이 등록되어있다.

등록된 앱에 들어간다.


2. ClientID와 Client Secret 저장

android 네이버 로그인 구현

네이버 개발자 센터에 등록된 앱에 들어가면 ClientID와 Client Secret 이 보인다.

이 값을 string.xml 파일에 저장해두자

<resources>

<string name="naver_client_id">4oazuS3HAI5XtabcIPfqzzTgsqNbbn_</string>
<string name="naver_client_secret">PASaamCbilUloliMotzot</string>

</resources>
위 값은 내가 임의로 적어놨다. ㅎㅎ


3. dependency 추가

//naver login
implementation "com.navercorp.nid:oauth:5.0.1"

앱수준 build.gradle에서 네이버로그인 sdk를 추가해준다.


4. 네이버 로그인 sdk 초기화

class MainApplication : Application() {

override fun onCreate() {
super.onCreate()

NaverIdLoginSDK.initialize(this, getString(R.string.naver_client_id), getString(R.string.naver_client_secret), getString(R.string.app_name))

}

}

Application 클래스에서 네이버 로그인 sdk를 초기화한다.

많이 빼먹는게 있는데...

<application
android:name="com.example.package.MainApplication"
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:roundIcon="@mipmap/ic_launcher_round"
android:supportsRtl="true"
android:theme="@style/AppTheme"
android:usesCleartextTraffic="true"></application>

manifest.xml 파일에서 application 태그 안에 name을 꼭 추가해주어야한다.


5. 네이버 로그인 코드 작성

private val naverProfileCallback = object : NidProfileCallback<NidProfileResponse> {
override fun onError(errorCode: Int, message: String) {
onFailure(errorCode, message)
}

override fun onFailure(httpStatus: Int, message: String) {
val errorCode = NaverIdLoginSDK.getLastErrorCode().code
val errorDescription = NaverIdLoginSDK.getLastErrorDescription() ?: ""
Log.d(TAG, "onFailure, errorCode: $errorCode msg: $errorDescription")

loginFailureCall(errorCode, errorDescription, "N")    //프로필 불러오기 실패처리
}

override fun onSuccess(response: NidProfileResponse) {
val msg = response.message ?: "success"
val userId = response.profile?.id ?: ""
val userEmail = response.profile?.email ?: ""
val userPhone = response.profile?.mobile ?: ""

Log.d(TAG, "id $userId, email $userEmail, phone $userPhone")

loginSuccessCall(msg, userId, userEmail, userPhone, "N")    //프로필 불러오기 성공처리

}
}

private fun tryNaverLogin() {
NaverIdLoginSDK.authenticate(this, object : OAuthLoginCallback {
override fun onError(errorCode: Int, message: String) {
loginFailureCall(errorCode.toString(), message, "N")
}

override fun onFailure(httpStatus: Int, message: String) {
loginFailureCall("0", message, "N")
}

override fun onSuccess() {
val naverToken = NaverIdLoginSDK.getAccessToken()
Log.d(TAG, "onSuccess, naverToken : $naverToken")
            //네이버 로그인 성공, 프로필 불러오자!
NidOAuthLogin().callProfileApi(naverProfileCallback)
}
})
}

아주 간단하다.

많은 도움이 되었으면 좋겠다.

다만, 지금은 네아로가 "개발"단계여서 개발자 아이디로만 로그인이 가능하다.

(테스트아이디 추가가능)

앱으로 출시하여 모든 아이디로 로그인을 허용할 때는 네이버 개발자센터에서 검수요청을 해야한다.

이 과정이 좀 번거롭긴 하다....

화이팅!!