SplashActivity입니다.
package kr.co.company.mainactivity_map;
import android.content.Intent;
import android.os.Bundle;
import com.kakao.auth.ISessionCallback;
import com.kakao.auth.Session;
import com.kakao.util.exception.KakaoException;
import com.kakao.util.helper.log.Logger;
/**
* Created by gimhyeongcheol on 2016. 5. 28..
*/
public class firstloading extends myact {
private SessionCallback callback; //콜백 선언
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.firstloading);
callback = new SessionCallback(); // 이 두개의 함수 중요함
Session.getCurrentSession().addCallback(callback);
}
@Override
protected void onActivityResult(int requestCode, int resultCode, 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);
}
private class SessionCallback implements ISessionCallback {
@Override
public void onSessionOpened() {
redirectSignupActivity(); // 세션 연결성공 시 redirectSignupActivity() 호출
}
@Override
public void onSessionOpenFailed(KakaoException exception) {
if(exception != null) {
Logger.e(exception);
}
setContentView(R.layout.firstloading); // 세션 연결이 실패했을때
} // 로그인화면을 다시 불러옴
}
protected void redirectSignupActivity() { //세션 연결 성공 시 SignupActivity로 넘김
final Intent intent = new Intent(this, KakaoSignupActivity.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
finish();
}
}
KakaoSignupActivity입니다.
package kr.co.company.mainactivity_map;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import com.kakao.auth.ErrorCode;
import com.kakao.network.ErrorResult;
import com.kakao.usermgmt.UserManagement;
import com.kakao.usermgmt.callback.MeResponseCallback;
import com.kakao.usermgmt.response.model.UserProfile;
import com.kakao.util.helper.log.Logger;
/**
* Created by gimhyeongcheol on 2016. 5. 29..
*/
public class KakaoSignupActivity extends Activity {
/**
* Main으로 넘길지 가입 페이지를 그릴지 판단하기 위해 me를 호출한다.
* @param savedInstanceState 기존 session 정보가 저장된 객체
*/
@Override
protected void onCreate(final Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestMe();
}
/**
* 사용자의 상태를 알아 보기 위해 me API 호출을 한다.
*/
protected void requestMe() { //유저의 정보를 받아오는 함수
UserManagement.requestMe(new MeResponseCallback() {
@Override
public void onFailure(ErrorResult errorResult) {
String message = "failed to get user info. msg=" + errorResult;
Logger.d(message);
ErrorCode result = ErrorCode.valueOf(errorResult.getErrorCode());
if (result == ErrorCode.CLIENT_ERROR_CODE) {
finish();
} else {
redirectLoginActivity();
}
}
@Override
public void onSessionClosed(ErrorResult errorResult) {
redirectLoginActivity();
}
@Override
public void onNotSignedUp() {
} // 카카오톡 회원이 아닐 시 showSignup(); 호출해야함
@Override
public void onSuccess(UserProfile userProfile) { //성공 시 userProfile 형태로 반환
Logger.d("UserProfile : " + userProfile);
redirectMainActivity(); // 로그인 성공시 MainActivity로
}
});
}
private void redirectMainActivity() {
startActivity(new Intent(this, myact.class));
finish();
}
protected void redirectLoginActivity() {
final Intent intent = new Intent(this, firstloading.class);
intent.setFlags(Intent.FLAG_ACTIVITY_NO_ANIMATION);
startActivity(intent);
finish();
}
}
이거말고 KakaoSDKAdapter.java랑GlobalApplication 두개의 카톡 소스가 있는데요.
계속 keyhash값이 안맞다고뜨네요..
http://blog.naver.com/tkddlf4209/220684933749 보고했습니다.
일단 실행결과로

가뜨고 로그인에 팀명뜨고 동의할지 안할지 뜨고 카카오 계정 등록된 카카오톡으로 메세지까지 가는데요,
동의를 누르면 또다시 로그인화면으로 가버립니다.
public void onSuccess(UserProfile userProfile) { //성공 시 userProfile 형태로 반환
Logger.d("UserProfile : " + userProfile);
redirectMainActivity(); // 로그인 성공시 MainActivity로
}
});
부분이 안되는거 같아서... 정말 답답해 미칠지경입니다.
고수님들 도와주세요..ㅜ