2013-04-28 75 views
5

我(想我)跟着Facebook教程,但我无法正常工作。我试图通过FB登录,然后获取有关用户的信息。我有:Android Facebook SDK - session.isOpened()总是返回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()); 
        } 
       }); 
      } 
     } 

然后:

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); 
     } 
    } 

但似乎 “真棒” 从不打印( “好” 打印)eventhough我设法登录到FB。 或者我不明白session.isOpened()是什么意思?

回答

9

好吧,现在工作。我有两个问题。一个是我在these指令后修复的不正确的散列键。 另一个是我不知道我必须重写此方法:

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