이번에는 카카오톡 로그인을 만들어보겠습니다.
우선 앱에서 카카오로그인 기능을 사용하기 위해서 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 |