참조 : https://developers.kakao.com/docs/latest/ko/kakaologin/android
현재 카카오톡은 코틀린으로만 제공되고 있고, 자바는 구 버전형태로 제공되고 있음.
코틀린과 자바를 혼용 사용하여 개발하는방법으로 구현 필요.
1. 코틀린과 자바 혼용 방법
- 코틀린 클래스를 추가하면, 안드로이드 스튜디오에 에러 및 안내창이 뜬다. 클릭을 통해 업데이트, 설치 등을 하게되면 자동으로 세팅을 한다.
- 호출방법은 기존 함수 이용방법과 동일함.
2. 어플리케이션 추가 및 설정
- Developers.kakao 에서 어플리케이션 추가, keystore의 hash값 추가 및 안드로이드 설정 해야 함. 릴리즈 디버그 해쉬 포함 필요
keytool -exportcert -alias "키앨리어스값" -keystore "키스토어 위치 및 파일명" | "openssl설치위치\bin\openssl" sha1 -binary | "openssl설치위치\bin\openssl" base64
- gradle 수정 (app) : implementation "com.kakao.sdk:v2-user:2.2.0" // 카카오 로그인 추가
- gradle 수정 (가장 바깥쪽) :
buildscript { 와 allprojects { 에 maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' } 추가
3. Manifest.xml 수정
- developers.kakao 에서 추가한 어플리케이션의 네이티브 키를 입력해야함.
<intent-filter>
<action android:name="android.intent.action.VIEW" />
<category android:name="android.intent.category.DEFAULT" />
<category android:name="android.intent.category.BROWSABLE" />
<!-- Redirect URI: "kakao{NATIVE_APP_KEY}://oauth“ -->
<data android:host="oauth"
android:scheme="kakaob9323959b9655e836eea203eabc5f714" />
</intent-filter>
4. 초기화
- 프로그램 시작점에 KakaoSdk.init(context,"b9323959b9655e836eea203eabc5f714") 코드를 호출해야함. 네이티브 키값임
5. 로그인 및 회원정보 가져오기|
//로그인 호출 코드의 콜백 등록. KakaoLoginCallback 라는 인터페이스 별도 생성
lateinit var m_callback : KakaoLoginCallback
//초기화시 콜백을 받아 맴버변수 저장 및 카카오 sdk 초기화
fun Init(context : Context, callaback : KakaoLoginCallback)
{
m_callback = callaback
KakaoSdk.init(context,"b9323959b9655e836eea203eabc5f714")
}
fun Login(context : Context)
{
//카카오톡 설치여부 확인 후 설치되어 있으면 카카오 로그인, 안되어 있으면 브라우저 로그인
if(LoginClient.instance.isKakaoTalkLoginAvailable(context))
{
LoginClient.instance.loginWithKakaoTalk(context, callback = kakaoLoginCallback)
}
else
{
LoginClient.instance.loginWithKakaoAccount(context, callback = kakaoLoginCallback)
}
}
// 로그인 결과 콜백.
val kakaoLoginCallback : (OAuthToken?, Throwable?) -> Unit = {
token, error ->
if(error != null)
{
m_callback.loginFailCallback(error.message)
}
else if(token != null)
{
//회원 정보 취득
UserApiClient.instance.me { user, userError ->
if(userError != null)
{
m_callback.loginFailCallback(userError.message)
}
else if(user != null)
{
m_callback.loginSuccessCallback(user.kakaoAccount?.email)
}
}
}
}
'Android' 카테고리의 다른 글
| 갤럭시 워치 통신을 위한 arr 프로젝트 및 Unity Demo 프로젝트 내용정리 (0) | 2022.03.25 |
|---|---|
| Push Notification 커스텀 소리 재생 (0) | 2022.03.24 |
| Android SNS 로그인 (구글) (0) | 2022.03.24 |
| Android 콜백 구현 (0) | 2022.03.24 |
| Android SNS 로그인 (네이버) (0) | 2022.03.24 |