//카카오톡 로그인 api
class KakaoAuth extends AppCompatActivity {
//SessionCallback 선언
private SessionCallback Callback;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
UserManagement.getInstance().requestLogout(new LogoutResponseCallback() {
@Override
public void onCompleteLogout() {
}
});
Callback = new SessionCallback();
Session.getCurrentSession().addCallback(Callback);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
//간편로그인시 호출 ,없으면 간편로그인시 로그인 성공화면으로 넘어가지 않음
if (Session.getCurrentSession().handleActivityResult(requestCode, resultCode, data)) {
return;
}
super.onActivityResult(requestCode, resultCode, data);
}
@Override
protected void onDestroy() {
super.onDestroy();
Session.getCurrentSession().removeCallback(Callback);
}
//SessionCallback 클래스 구현
private class SessionCallback implements ISessionCallback{
@Override
public void onSessionOpened() {
UserManagement.getInstance().me(new MeV2ResponseCallback() {
@Override
public void onFailure(ErrorResult errorResult) {
Log.e("KAKAO_API", "사용자 정보 요청 실패: " + errorResult);
}
@Override
public void onSessionClosed(ErrorResult errorResult) {
}
@Override
public void onSuccess(MeV2Response result) {
Log.i("KAKAO_API", "사용자 아이디: " + result.getId());
UserAccount kakaoAccount = result.getKakaoAccount();
if (kakaoAccount != null) {
// 이메일
String email = kakaoAccount.getEmail();
if (email != null) {
Log.i("KAKAO_API", "email: " + email);
} else if (kakaoAccount.emailNeedsAgreement() == OptionalBoolean.TRUE) {
// 동의 요청 후 이메일 획득 가능
// 단, 선택 동의로 설정되어 있다면 서비스 이용 시나리오 상에서 반드시 필요한 경우에만 요청해야 합니다.
} else {
// 이메일 획득 불가
}
// 프로필
Profile profile = kakaoAccount.getProfile();
if (profile != null) {
Log.d("KAKAO_API", "nickname: " + profile.getNickname());
Log.d("KAKAO_API", "profile image: " + profile.getProfileImageUrl());
Log.d("KAKAO_API", "thumbnail image: " + profile.getThumbnailImageUrl());
} else if (kakaoAccount.profileNeedsAgreement() == OptionalBoolean.TRUE) {
// 동의 요청 후 프로필 정보 획득 가능
} else {
// 프로필 획득 불가
}
}
}
});
}
@Override
public void onSessionOpenFailed(KakaoException exception) {
}
}
}