2014-02-15 2 views
2

문제가 생겼습니다. 페이스 북 로그인으로 앱을 개발 중이며 User 데이터를 가져와야합니다. Request.newMeRequest에서이 데이터를받을 수없는 이유가 있습니다. onCompleted 메서드가 호출 된 적이 없습니다. logcat에서만 로그인/로그 아웃 메시지를 볼 수 있습니다. 내가 뭘 잘못하고있어?FacebookSDK Request.newMeRequest가 한번도 호출되지 않았습니다.

private Session.StatusCallback statusCallback = new Session.StatusCallback() { 
    @Override 
    public void call(Session session, SessionState state, Exception exception) { 
     onSessionStateChange(session, state, exception); 
    } 
}; 

private void onSessionStateChange(Session session, SessionState state, Exception exception) { 
    if (state.isOpened()) { 
     Log.i("QWE", "Logged in..."); 
     Request.newMeRequest(session, new Request.GraphUserCallback() { 
      @Override 
      public void onCompleted(GraphUser user, Response response) { 
       Log.i("QWE","onCompleted"); 
       if (user != null) { 
        Log.i("QWE", "User is "+ user.getUsername()); 
       } 
      } 
     }); 
    } else if (state.isClosed()) { 
     Log.i("QWE", "Logged out..."); 
    } 
} 

답변

27

여기서 문제는이 요청을 만든 것입니다,하지만 요청이되지 않습니다, 그래서 당신은 그것을 executeAsync를 호출하지 않는 :

여기 내 코드입니다. 시도해보십시오 :

Request.newMeRequest(session, new Request.GraphUserCallback() { 
    @Override 
    public void onCompleted(GraphUser user, Response response) { 
     Log.i("QWE","onCompleted"); 
     if (user != null) { 
      Log.i("QWE", "User is "+ user.getUsername()); 
     } 
    } 
}).executeAsync(); // <--- CHANGE IS HERE 
+0

왜 우리가'.executeAsync();'가 필요한지, 왜'.executeAndWait();'가 필요하지 않습니까? –

+0

executeAndWait를 호출하는 것은 자유입니다. 단지 주 스레드에서 호출하지 말아야합니다. –

+0

'onCreate()'함수를 사용하고 싶습니까? –

관련 문제