* 이전 버전으로 카카오톡에 로그인을 수행하는 기술은 아래 게시글을 참고하여 주세요.
2021.05.11 - [Android Studio/JAVA]SNS 로그인 구현(2) - 카카오톡 sdk v1
1. AndroidManifest.xml에 아래 코드를 입력하여 Redirect URI 설정합니다.
<activity android:name="com.kakao.sdk.auth.AuthCodeHandlerActivity">
<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="kakao{NATIVE_APP_KEY}" />
</intent-filter>
</activity>
* 카카오 로그인 기능을 구현하기 위해서는 리다이렉션(Redirection)을 통해 인가 코드를 받아야 합니다.
2. 카카오 sdk2 로그인을 사용하기 위하여 build.gradle(:app) dependcies에 추가해줍니다.
implementation "com.kakao.sdk:v2-user:2.5.0" // 카카오 로그인 sdk v2
repositories {
maven { url 'https://devrepo.kakao.com/nexus/content/groups/public/' }
}
3. 로그인을 실행할 부분에 아래 코드를 작성해주세요.
if (UserApiClient.getInstance().isKakaoTalkLoginAvailable(mContext)) {
// 카카오톡이 설치되어 있을 경우
UserApiClient.getInstance().loginWithKakaoTalk(MainActivity.this, kakaoCallback);
} else {
// 카카오톡이 설치되어있지 않은 경우
UserApiClient.getInstance().loginWithKakaoAccount(MainActivity.this, kakaoCallback);
}
* SDK V2는 카카오톡이 있으면 카카오톡으로 로그인이 되고, 없으면 웹페이지로 로그인이 됩니다.
* 여기서 kakaoCallback을 실행시킨다.
4. 토큰값을 얻어와 로그인 여부를 따지고, 카카오 프로필 정보를 얻어오는 getKakaoProfile() 메서드를 실행한다.
Function2<OAuthToken, Throwable, Unit> kakaoCallback = (oAuthToken, throwable) -> {
if (oAuthToken != null) {
Log.e("TAG", "로그인 성공");
}
if (throwable != null) {
Log.e("TAG", "로그인 실패", throwable);
Log.d("TAG", "Message : " + throwable.getLocalizedMessage());
}
getKaKaoProfile();
return null;
};
5. 로그인 계정 정보를 받아온다.
private void getKaKaoProfile() {
UserApiClient.getInstance().me((user, throwable) -> {
if (user != null) {
login_name = user.getKakaoAccount().getProfile().getNickname();
Log.d("TAG", "Kakao id =" + login_name);
txtLoginState.setText("카카오톡 : " + login_name);
Toast.makeText(mContext,"환영합니다!", Toast.LENGTH_LONG).show();
} else {
Toast.makeText(mContext,"계정 정보 없음!", Toast.LENGTH_LONG).show();
}
if (throwable != null) {
Log.d("TAG", "invoke: " + throwable.getLocalizedMessage());
}
return null;
});
}
'Android > 튜토리얼 및 가이드' 카테고리의 다른 글
[Android/Training] View를 사진으로 저장하기 (0) | 2023.05.09 |
---|---|
[Android/SDK연동]친구(나)에게 카카오링크 메시지 보내기 (0) | 2021.05.14 |
[Android/API]SNS 로그인 구현(5) - 네이버 JSON 파싱으로 계정 정보 얻어오기 (0) | 2021.05.14 |
[Android/SDK연동]SNS 로그인 구현(4) - 페이스북 (0) | 2021.05.12 |
[Android/SDK연동]SNS 로그인 구현(2) - 카카오톡 sdk v1 (0) | 2021.05.11 |