2013-04-28 18 views
5

I (penso di) seguito il tutorial di Facebook ma non riesco a farlo funzionare correttamente. Sto cercando di accedere tramite FB e quindi ottenere informazioni sull'utente. Ho:Android Facebook SDK - session.isOpened() restituisce sempre false

private Session.StatusCallback statusCallback = new Session.StatusCallback() { 

     @Override 
     public void call(Session session, SessionState state, Exception exception) { 
      System.out.println("GOOD"); 
      if (session.isOpened()) { 
       System.out.println("AWESOME"); 
       Request.executeMeRequestAsync(session, new Request.GraphUserCallback() { 

        // callback after Graph API response with user object 
        @Override 
        public void onCompleted(GraphUser user, Response response) { 
         m_user = user; 
         System.out.println("Hello " + user.getName()); 
        } 
       }); 
      } 
     } 

E poi:

public void onBtnFacebookClick(final View v) { 
     Session session = Session.getActiveSession(); 
     if (session == null) { 
      session = new Session(this); 
      Session.setActiveSession(session); 
      if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) { 
       session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback)); 
      } 
     } 
     if (!session.isOpened() && !session.isClosed()) { 
      session.openForRead(new Session.OpenRequest(this).setCallback(statusCallback)); 
     } else { 
      Session.openActiveSession(this, true, statusCallback); 
     } 
    } 

ma sembra che "AWESOME" non viene mai stampato ("buono" viene stampata) eventhough sono riuscito a accedere a FB. O forse non capisco cosa significa session.isOpened()?

risposta

9

Ok, funziona ora. Ho avuto due problemi. Uno è la chiave hash errata che ho corretto seguendo le istruzioni these. L'altro è che non sapevo di dover ignorare questo metodo:

@Override 
    public void onActivityResult(int requestCode, int resultCode, Intent data) { 
     super.onActivityResult(requestCode, resultCode, data); 
     Session.getActiveSession() 
      .onActivityResult(this, requestCode, resultCode, data); 
    } 
Problemi correlati