2014-02-15 4 views
2

У меня проблема: я разрабатываю приложение с логином facebook, а также мне нужно получить данные Пользователя, по некоторым причинам я не могу получить эти данные в 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()'? –

Смежные вопросы