MVC 게시판

Oauth 카카오 로그인 앱

beejaem 2022. 1. 10. 20:26

이번에는 카카오톡 로그인을 만들어보겠습니다.

 우선 앱에서 카카오로그인 기능을 사용하기 위해서 gradle을 설정합니다.

settings.gradle과 build.gradle의 repositories에 아래 내용을 추가 해줍니다.

maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }

setting.gradle

repositories {
    google()
    mavenCentral()
    maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }
    jcenter() // Warning: this repository is going to shut down soon
}

build.gradle(프로젝트)

repositories {
    google()
    mavenCentral()
    maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }
}

다음은 카카오 SDK를 사용하기 위해 dependencies에 의존성 추가를 해줍니다.

build.gradle

implementation "com.kakao.sdk:v2-user:2.8.4" // 카카오 로그인

이제 카카오개발자 페이지로 가서 앱 연동을 위한 등록을 해줍니다.

키 해시를 받기 위해서는 아래코드를 한번 실행해서 로그에 나온 키를 사용하면 됩니다.

val keyHash = Utility.getKeyHash(this)
Log.d("abcd",keyHash)

이제 제가 등록한 앱에 대한 앱 키를 받아옵니다.

네이티브 앱 키를 복사하고 아래와 같이 새로운 코틀린파일을 생성해줍니다. 

GlobalApplication.kt

class GlobalApplication : Application() {
    override fun onCreate() {
        super.onCreate()

        KakaoSdk.init(this,"bdbde03925f9f33b526a596bca5dbb89")
    }
}

init 에는 방금 복사해온 네이티브 키를 넣어주면 됩니다. 이 앱키가 확인을 되어야 카카오로그인 페이지와 정상적으로

연결이 가능하기 때문에 앱이 실행되면 가장 먼저 실행될 수 있도록 AndroidManifest.xml을 수정합니다.

application에 아래코드를 추가하고

android:name=".GlobalApplication"

카카오 로그인페이지를 띄울 수 있게 activity를 추가해줍니다.

<activity android:name="com.kakao.sdk.auth.AuthCodeHandlerActivity"
    android:exported="true">
    <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="oauth"
            android:scheme="kakaobdbde03925f9f33b526a596bca5dbb89" />
    </intent-filter>
</activity>
android:scheme="kakaobdbde03925f9f33b526a596bca5dbb89" />

위의 스키마에는 kakao+복사해온 네이티브 key를 넣어줍니다.

 

그럼 이제 메인에서 버튼에 동작할 코드만 작성해주면 됩니다.

MainActivity.kt

btn_kakao.setOnClickListener {
    UserApiClient.instance.loginWithKakaoAccount (this) { token, error ->
        if (error != null) {
            Log.e("ab", "로그인 실패", error)
        }
        else if (token != null) {
            Log.i("cd", "로그인 성공 ${token.accessToken}")
            // 사용자 정보 요청 (기본)
            UserApiClient.instance.me { user, error ->
                if (error != null) {
                    Log.e("cd", "사용자 정보 요청 실패", error)
                }
                else if (user != null) {
                    Log.i("cd", "사용자 정보 요청 성공" +
                            "\n회원번호: ${user.id}" +
                            "\n이메일: ${user.kakaoAccount?.email}" +
                            "\n닉네임: ${user.kakaoAccount?.profile?.nickname}")
                }
            }
        }
    }
}

결과

'MVC 게시판' 카테고리의 다른 글

Mybatis Mapper.xml 사용하기  (0) 2022.08.11
Oauth 카카오로그인 웹  (0) 2022.01.10
회원가입-3  (0) 2022.01.10
회원가입-2  (0) 2022.01.06
회원가입-1  (0) 2022.01.06