2014-12-20 3 views
0

настроить мой основной вид деятельности OnCreate метод, как:Не удается получить facebook информацию о пользователе на facebook Android SDK

protected void onCreate(Bundle savedInstanceState) { 
    // TODO Auto-generated method stub 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 
    testtext = (TextView) findViewById(R.id.testtext); 

    loginButton = (LoginButton) findViewById(R.id.authButton); 
    loginButton.setUserInfoChangedCallback(new LoginButton.UserInfoChangedCallback() { 
     @Override 
     public void onUserInfoFetched(GraphUser user) { 
      MainActivity.this.user = user; 
      System.out.println("user:"+user.getFirstName()); 
      testGet(); 

     } 
    }); 
} 

и метод testGet(), чтобы проверить выборку ленту новостей пользователя:

public void testGet(){ 
    String[] requests = {"/me/home"}; 
    RequestBatch requestBatch = new RequestBatch(); 
    for (final String request : requests) { 
     requestBatch.add(new Request(Session.getActiveSession(), 
       request, null, null, new Request.Callback() { 
      public void onCompleted(Response response) { 
       GraphObject graphObject = response.getGraphObject(); 
       String s = testtext.getText().toString(); 
       if (graphObject != null) { 
         s = s + String.format("%s\n%s\n%s\n%s\n\n", 
           graphObject.getProperty("name"), 
           graphObject.getProperty("description"), 
           graphObject.getProperty("create_time"), 
           graphObject.getProperty("type")); 
       } 
       s = s + "\n hello, " + user.getFirstName() + "!\n"; 
       testtext.setText(s); 
       System.out.println(s); 
       testtext.setText(s); 
      } 
     })); 
    } 
    requestBatch.executeAsync(); 
} 

Однако после запуска приложения на устройстве Android он разбился даже до того, как я нажму кнопку входа в facebook.

Ошибка:

java.lang.NullPointerException: Attempt to invoke interface method 'java.lang.String com.facebook.model.GraphUser.getFirstName()' on a null object reference 

Что здесь проблема? Почему вызов onUserInfoFetched() вызывается еще до входа в систему?

Кстати, кто-нибудь знает, правильно ли метод testGet() для получения новостей?

Спасибо!

ответ

0

Заменить этот

GraphObject graphObject = response.getGraphObject(); 

по этой

JSONObject object = user.getInnerJSONObject(); 
Смежные вопросы