# https://developers.naver.com/docs/login/android/android.md 접속

# 오픈 API 이용 신청

어플리케이션과 로그인 시 사용할 정보를 선택한다.

어플을 다운로드 할 URL과 안드로이드 앱 패키지 이름을 작성한다.
URL은 마땅히 없으면 네이버 URL을 적어도 된다.

등록하기를 누르면 Client ID와 Client Secret이 나온다.
이 정보를 프로젝트의 res/string.xml에 적어두도록 하자.
<resources>
<string name="app_name">LoginTest</string>
<string name="naver_client_id">client id 작성</string>
<string name="naver_client_secret">client secret 작성</string>
<string name="naver_client_name">client name 작성</string>
</resources>
# 개발 환경 설정
네이버 로그인 API를 사용하기 위해 다음과 같이 gradle파일을 설정한다.
dependencies {
...
// naver login
implementation(libs.oauth.jdk8) // jdk 8
// naver login dependency
implementation (libs.kotlin.stdlib)
implementation (libs.kotlinx.coroutines.android)
implementation (libs.androidx.appcompat.v131)
implementation (libs.androidx.legacy.support.core.utils)
implementation (libs.androidx.browser)
implementation (libs.androidx.legacy.support.v4)
implementation (libs.androidx.constraintlayout.v113)
implementation (libs.androidx.security.crypto)
implementation (libs.androidx.core.ktx.v130)
implementation (libs.retrofit)
implementation (libs.converter.gson)
implementation (libs.moshi.kotlin)
implementation (libs.logging.interceptor)
implementation (libs.lottie)
}
activity_main.xml에 네이버 로그인 버튼을 만든다.
이때 네이버 로그인 버튼은 네이버에서 정한 디자인을 따라야 한다.
com.navercorp.nid.oauth.view.NidOAuthLoginButton
이 버튼을 사용하거나, 혹은 다른 디자인을 원한다면 아래의 디자인 가이드를 참고하면 되겠다.
https://developers.naver.com/docs/login/bi/bi.md
로그인 버튼 사용 가이드 - LOGIN
네이버 로그인은 애플리케이션에 사용할 수 있는 네이버 로그인 버튼 기본 이미지를 제공합니다. 애플리케이션의 상황에 맞게 버튼 이미지의 디자인을 변경할 수 있지만 네이버 고유의 아이덴
developers.naver.com
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:id="@+id/main"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<com.navercorp.nid.oauth.view.NidOAuthLoginButton
android:id="@+id/buttonOAuthLoginImg"
android:layout_width="wrap_content"
android:layout_height="50dp"
android:layout_marginTop="16dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:ignore="TouchTargetSizeCheck,SpeakableTextPresentCheck" />
</androidx.constraintlayout.widget.ConstraintLayout>

이후 다음과 같은 코드를 작성하면 네이버 로그인 구현을 완성할 수 있다.
package com.example.logintest
import android.os.Bundle
import android.util.Log
import android.widget.Toast
import androidx.activity.result.ActivityResult
import androidx.activity.result.contract.ActivityResultContracts
import androidx.appcompat.app.AppCompatActivity
import com.example.logintest.databinding.ActivityMainBinding
import com.google.android.gms.auth.api.signin.GoogleSignIn
import com.google.android.gms.auth.api.signin.GoogleSignInClient
import com.google.android.gms.auth.api.signin.GoogleSignInOptions
import com.google.android.gms.common.api.ApiException
import com.navercorp.nid.NaverIdLoginSDK
import com.navercorp.nid.oauth.OAuthLoginCallback
class MainActivity : AppCompatActivity() {
lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
setContentView(binding.root)
// naver login
NaverIdLoginSDK.initialize(this, getString(R.string.naver_client_id), getString(R.string.naver_client_secret), getString(R.string.naver_client_name))
binding.buttonOAuthLoginImg.setOAuthLogin(object : OAuthLoginCallback {
override fun onSuccess() {
Log.d("test", "AccessToken : " + NaverIdLoginSDK.getAccessToken())
Log.d("test", "client id : " + getString(R.string.naver_client_id))
Log.d("test", "ReFreshToken : " + NaverIdLoginSDK.getRefreshToken())
Log.d("test", "Expires : " + NaverIdLoginSDK.getExpiresAt().toString())
Log.d("test", "TokenType : " + NaverIdLoginSDK.getTokenType())
Log.d("test", "State : " + NaverIdLoginSDK.getState().toString())
}
override fun onFailure(httpStatus: Int, message: String) {
val errorCode = NaverIdLoginSDK.getLastErrorCode().code
val errorDescription = NaverIdLoginSDK.getLastErrorDescription()
Log.e("test", "$errorCode $errorDescription")
}
override fun onError(errorCode: Int, message: String) {
onFailure(errorCode, message)
}
})
}
}

'전공 > Android' 카테고리의 다른 글
| [안드로이드] 구글 로그인 연동 방법 (1) | 2025.03.11 |
|---|---|
| [안드로이드] 카카오 로그인 연동 방법 (0) | 2024.06.26 |
| [영화 정보 앱 만들기] 06. 기타 기능 (0) | 2024.06.22 |
| [영화 정보 앱 만들기] 05. 정보 수정하기 (0) | 2024.06.20 |
| [영화 정보 앱 만들기] 04. 데이터 추가하기 (0) | 2024.06.20 |
