마스터Q&A 안드로이드는 안드로이드 개발자들의 질문과 답변을 위한 지식 커뮤니티 사이트입니다. 안드로이드펍에서 운영하고 있습니다. [사용법, 운영진]

안드로이드 카카오톡 api연동 질문.[로그인만] [closed]

0 추천

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로
    }
});

부분이 안되는거 같아서... 정말 답답해 미칠지경입니다.

고수님들 도와주세요..ㅜ

질문을 종료한 이유: 해결함
익명사용자 님이 2016년 5월 29일 질문
2016년 5월 29일 closed
어떻게 해결하셨나요??
...