빡빡종
285
2019-01-09 10:17:47 작성 2019-01-09 10:18:26 수정됨
2
72

카카오톡 로그인 프로필 데이터전달 / 액티비티 전환


카톡 로그인이랑 카톡 로그아웃기능을 완성하긴 했습니다.


그런데 로그인시에 넘어오는 프로필 정보를 다른 액티비티에 전달하는게 잘 안되네요 ㅠㅠ


Log.d에서 잘 나오기는 하는데 이걸 다른액티비티로 어떻게 넘겨야할까요?


그리구 로그인성공시에 메인액티비티로 전환되게 하려면 어디에 인텐트를 써줘야할까요?


onSessionOpened()에 넣어주려고 했는데 startactivity가 없구,,requestme에도 없어서 못하고 있습니다


도와주세요 !!!!


public class SessionCallback implements ISessionCallback {

    // 로그인에 성공한 상태
    @Override
    public void onSessionOpened() {
        requestMe();

    }
    // 로그인에 실패한 상태
    @Override
    public void onSessionOpenFailed(KakaoException exception) {
        Log.e("SessionCallback :: ", "onSessionOpenFailed : " + exception.getMessage());
    }

    // 사용자 정보 요청
    public void requestMe() {

        // 사용자정보 요청 결과에 대한 Callback

        UserManagement.getInstance().requestMe(new MeResponseCallback() {
            // 세션 오픈 실패. 세션이 삭제된 경우,
            @Override
            public void onSessionClosed(ErrorResult errorResult) {
                Log.e("SessionCallback :: ", "onSessionClosed : " + errorResult.getErrorMessage());
            }
            // 회원이 아닌 경우,
            @Override
            public void onNotSignedUp() {
                Log.e("SessionCallback :: ", "onNotSignedUp");
            }
            // 사용자정보 요청에 성공한 경우,
            @Override
            public void onSuccess(UserProfile userProfile) {
                Log.e("SessionCallback :: ", "onSuccess");

                String nickname = userProfile.getNickname();

                String email = userProfile.getEmail();

                String profileImagePath = userProfile.getProfileImagePath();

                String thumnailPath = userProfile.getThumbnailImagePath();

                String UUID = userProfile.getUUID();

                long id = userProfile.getId();

                Log.e("Profile : ", nickname + "");

                Log.e("Profile : ", email + "");

                Log.e("Profile : ", profileImagePath  + "");

                Log.e("Profile : ", thumnailPath + "");

                Log.e("Profile : ", UUID + "");

                Log.e("Profile : ", id + "");
                

            }
            

            // 사용자 정보 요청 실패
            @Override
            public void onFailure(ErrorResult errorResult) {
                Log.e("SessionCallback :: ", "onFailure : " + errorResult.getErrorMessage());
            }
        });

    }

}


0
1
  • 답변 2

  • Aaron
    396
    2019-01-09 10:41:51

    SessionCallback에 다시 콜백 interface를 뚫어놓으시면 될 것 같은 데요?

    아니면 SessionCallback에 Context를 넘겨주고, Context에서 startActivity하셔도 되고요.

    0
  • UnknownDontknow
    132
    2019-01-09 13:27:13

    윗분 말씀대로 하셔도 되구, API로 제공되는 정보들을  직접 가공해야 할 부분이 있는게 아니라면 굳이 인터페이스 상속받아서 새로구현하실 필요는 없을것같아요. 그냥 해당 액티비티 코드에서 세션열고 내 정보 가져와서 넘겨주면 되요.


    ISessionCallback callback = new ISessionCallback() {
                @Override
                public void onSessionOpened() {
                    requestMe();
                    Log.d(TAG,"세션오픈 <성공>");
                }
    
                @Override
                public void onSessionOpenFailed(KakaoException exception) {
                    setContentView(R.layout.activity_main);
                    Log.d(TAG,"세션오픈 <실패>");
                }
            };
    
    
     private void requestMe() {
            UserManagement.getInstance().me(new MeV2ResponseCallback() {
                @Override
                public void onSessionClosed(ErrorResult errorResult) {
                    Log.d(TAG,"카카오 세션 Close!");
                }
    
                @Override
                public void onSuccess(MeV2Response result) {
                    String url = result.getProfileImagePath();
                    String id = result.getNickname();
                    long token = result.getId();
                    
                    Intent intent = new Intent(MainActivity.this, UserDataActivity.class);
                                intent.putExtra("profileImage",url);
                                intent.putExtra("id",id);
                                intent.putExtra("token",token); 
                                startActivity(intent);                      
                }
            });
    
        }
    
    


    0
  • 로그인을 하시면 답변을 등록할 수 있습니다.