Session 초기화가 안되었다는 오류

카카오톡 로그인 연동 구현중에 LoginActivity에서

callback = new SessionCallback();
Session.getCurrentSession().addCallback(callback);
Session.getCurrentSession().checkAndImplicitOpen();
이런식으로 호출을 했는데 session초기화 안됬다는 에러가 뜹니다 …ㅠ 어디서 초기화를 시켜줘야하는지를
잘몰라서 질문을 드립니다…ㅠ
그리고 메니페스트에 등록은 LoginActivity를 해주는게 맞는거 아닙니까??ㅠ

@gglee6177 가이드를 보니 로그인 사용법 의 1번 관련 사항이지 않을까 하는데요, KakaoSDK.init 이부분이 초기화 아닐까요?

KakaoSDK.init이 부분 SampleLoginActivity부분에는 없드라고요 … addCallBack해주기전에 init을 시켜줘야하는건가요그럼??

https://developers.kakao.com/docs/android#사용자-관리-로그인-사용법 여기를 보시면 init을 하는 법에 대한 가이드가 있는데요. sdk는 어플리케이션의 생명주기와 같이 합니다. 즉 어플리케이션이 구동될때 딱 한번 init을 하게 되면 되는데요. 보통 android Application을 상속받은 class 의 onCreate에서 처리를 하시면 됩니다. 가이드도 Application을 상속받은 GlobalApplication이라는 class를 사용하고 있구요.

위에 질문하신 LoginActivity는 저희쪽에서 제공하는 com.kakao.usermgmt.LoginButton.java(로그인버튼)가 포함된 Activity입니다. Activity이기 때문에 manifest 에 등록은 해 주셔야죠~

그럼 GlobalApplication 은 따로 메니페스트에 등록을 보니 안에서 등록하셨던데 그렇게 하면 기존에 앱실행이랑 겹쳐지는경우가되는데요… 따로 메니페스트만 등록을 해주면 되는건지요… 제가 잘몰라서 그렇습니다 .ㅠ

그리고 GlobalApplication안에 KakaoSDK.init(new KakaoSDKAdapter()); 초기화를 해주는데
LoginActivity에서 계속 addCallback이부분이 에러로 걸립니다…ㅠㅠ

GlobalApplication은 AndroidManifest.xml에 name filed에 넣어주시면 됩니다. 근데 기존에 사용하고 있는 Application이 있다면 그 Application안에 코드에 넣어주시면 되요. GlobalApplication은 Sample App에서 사용하는 class일뿐 중요한것은 그 안에 있는 코드입니다.

AddCallback에서 에러가 걸린다는게 어떤 뜻인가요??
KakaoSDK.init(new KakaoSDKAdapter()); 이코드와 addCallback 의 에러는 관계가 없어서요.
위에 말씀하신 init을 안했다는 에러가 발생한다는것인가요??

만약 그렇다면 제가 바로위에 답변을 단것처럼 manifest에 name 필드에 KakaoSDK.init(new KakaoSDKAdapter());의 코드가 들어가 있는 class를 넣어주시면 됩니다. Sample app의 경우 아래와 같이 되어있습니다.

<application
        android:name="com.kakao.sdk.sample.common.GlobalApplication"
        android:label="@string/app_name">
</application>

java.lang.IllegalStateException: Session is not initialized. Call KakaoSDK#init first.이런 에러로그가 잡혀요 ㅠㅠ

그리고 현재 메니페스트안에 추가는






    </activity>

이런식으로 추가가 되어있습니다

Activity 가 아니라 root에 Application entry에 name으로 붙여 주셔야 해요~

해결 하였습니다 감사합니다^^

1개의 좋아요