Development record of developer who study hard everyday.

, , , ,

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

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

안드로이드 블로그

에이전시 회사에서 일하는 안드로이드 개발자로서 무수히 많은 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)
}
})
}

아주 간단하다.

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

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

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

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

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

화이팅!!


Share:
Location: 대한민국

댓글 없음:

댓글 쓰기