반응형
[Android / Kotlin] Naver, Github Oauth2 (ACCESSTOKEN 발급)
이번 게시글에서는 프로젝트 진행 중 사용한 안드로이드에서 NAVER와 깃허브 Oauth2를 통해 AccessToken을 발급받는 방법을 정리할 것 입니다.
NAVER Oauth2
프로젝트를 진행하면서 Naver Oauth2를 이용해 로그인 처리를 하기 위해 아래와 같은 순서를 거쳤습니다.
1. naver developer 어플리케이션 등록
2. 라이브러리 설정 (dependency 및 naver sdk 설정)
- https://developers.naver.com/docs/login/android/android.md
3. 네아로 SDK 초기화
NaverIdLoginSDK.initialize(requireContext(), NAVER_CLIENT_ID, NAVER_CLIENT_SECRET, "앱 이름")
4. Callback 설정 (성공 시 accessToken 가져오기)
val oAuthLoginCallback = object : OAuthLoginCallback {
override fun onSuccess() {
val naverAccessToken = NaverIdLoginSDK.getAccessToken()
}
override fun onError(errorCode: Int, message: String) {
requireView().showSnackBarMessage("네이버 로그인에 실패했습니다.")
binding.progressbar.isVisible = false
}
override fun onFailure(httpStatus: Int, message: String) {
requireView().showSnackBarMessage("네이버 로그인에 실패했습니다.")
binding.progressbar.isVisible = false
}
}
5. 네이버 로그인 인증
NaverIdLoginSDK.authenticate(requireContext(), oAuthLoginCallback)
GITHUB Oauth2
프로젝트를 진행하면서 Naver Oauth2를 이용해 로그인 처리를 하기 위해 아래와 같은 순서를 거쳤습니다.
1. Github - Setting-Developer Setting - Oauth Apps 설정
2. Manifest 설정
<manifest>
<uses-permission android:name="android.permission.INTERNET" />
<activity
... >
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<data
android:host="github-auth"
android:scheme="callback URL" />
</intent-filter>
<activity />
<manifest>
3. 깃허브 로그인 실행 코드 (인터넷 로그인)
val githubLoginUri = Uri.Builder().scheme("https").authority("github.com")
.appendPath("login")
.appendPath("oauth")
.appendPath("authorize")
.appendQueryParameter("client_id", BuildConfig.GITHUB_CLIENT_ID)
.build()
startActivity(Intent(Intent.ACTION_VIEW, githubLoginUri).apply {
addCategory(Intent.CATEGORY_BROWSABLE)
addFlags(Intent.FLAG_ACTIVITY_SINGLE_TOP)
})
4. 액티비티 콜백 부분 (accessToken 발급)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityLoginBinding.inflate(layoutInflater)
setContentView(binding.root)
val uri = intent?.data
// Oauth 로그인 인지 아닌지 확인
when (uri?.scheme.toString()) {
"Callback URL scheme" -> { // 깃허브
loginActivityViewModel.isTriedGithubLogin = true
loginActivityViewModel.githubCode = uri?.getQueryParameter("code") ?: ""
}
else -> {}
} // End of when
}
참고
1. 네이버 Oauth2 개발가이드
- https://developers.naver.com/docs/login/android/android.md
2. Github Oauth2 개발가이드
https://docs.github.com/en/apps/oauth-apps/building-oauth-apps/authorizing-oauth-apps
728x90
'안드로이드 > 개발 공부' 카테고리의 다른 글
[Android / Kotlin] 안드로이드 14 Notification Ongoing 속성 동작 변경 (0) | 2024.03.14 |
---|---|
[Android/Kotlin] Room 이용 로컬 DB에 사용자 정의 자료형 및 리스트 추가(@Embed, @TypeConverter) (0) | 2022.04.06 |
[Android/Kotlin] Kotlin 코드에서 LinearLayout에 동적으로 Custom Layout(<include />) 추가 (0) | 2022.04.04 |
[Android/Kotlin] 문자열을 이용한 Resource 지정 (0) | 2022.03.14 |
[Android/Kotlin] Fragment에서 context 사용법 (2) | 2022.01.11 |