안드로이드 네이버 로그인 구현 예제
에이전시 회사에서 일하는 안드로이드 개발자로서 무수히 많은 sns로그인을 구현한다.
안드로이드 네이버 로그인 구현 예제를 하나 소개한다.
1. 네이버 개발자 센터에 앱 등록하기
☝ 네이버 개발자 센터에 들어가서 상위메뉴에 Application - 애플리케이션등록 클릭
애플리케이션 이름 작성하고 사용API에 네이버로그인 선택.
☝ 네이버 로그인에서 필요한 정보를 선택한다.
나의 경우에는 그냥 인증할 때만 사용해서 체크 안하겠다.
다운로드 URL 형식은 "https://play.google.com/store/apps/details?id=패키지이름" 이다.
둘 다 적어줬으면 아래 등록하기 버튼을 클릭해준다.
☝ 상위메뉴에 Application - 내 애플리케이션에 들어가보면 앱이 등록되어있다.
등록된 앱에 들어간다.
2. ClientID와 Client Secret 저장
네이버 개발자 센터에 등록된 앱에 들어가면 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)
}
})
}
아주 간단하다.
많은 도움이 되었으면 좋겠다.
다만, 지금은 네아로가 "개발"단계여서 개발자 아이디로만 로그인이 가능하다.
(테스트아이디 추가가능)
앱으로 출시하여 모든 아이디로 로그인을 허용할 때는 네이버 개발자센터에서 검수요청을 해야한다.
이 과정이 좀 번거롭긴 하다....
화이팅!!