2014-07-24 32 views
1

我從Facebook Developers站點獲取此代碼。它所做的只是允許用戶登錄和註銷。我現在想要做的是檢查他們是否在另一項活動中登錄或退出。因此,他們登錄後,轉到新的活動,然後在新的活動中,我想查看他們是否已登錄。如果是,我將顯示他們的個人資料圖片和姓名。因此,我需要知道的是:如何檢查FaceBook用戶是否已登錄或在Android應用程序中註銷

  1. 如何檢查自己是否登錄或登出
  2. 我怎樣才能在會話沒有啓動的活動進行檢查。

謝謝!

public class MainActivity extends Activity { 

@Override 
public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_main); 

    // start Facebook Login 
    Session.openActiveSession(this, true, new Session.StatusCallback() { 

    // callback when session changes state 
    @Override 
    public void call(Session session, SessionState state, Exception exception) { 
    if (session.isOpened()) { 

     // make request to the /me API 
     Request.newMeRequest(session, new Request.GraphUserCallback() { 

     // callback after Graph API response with user object 
     @Override 
     public void onCompleted(GraphUser user, Response response) { 
      if (user != null) { 
      TextView welcome = (TextView) findViewById(R.id.welcome); 
      welcome.setText("Hello " + user.getName() + "!"); 
      } 
     } 
     }).executeAsync(); 
    } 
    } 
}); 
} 

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

} 

回答

1

試試這個,我不能認爲它是正確的,但我用在我的項目中。

//do logout 
    public static void logout() { 
     Session session = Session.getActiveSession(); 
     if (session != null && !session.isClosed()) { 
      session.closeAndClearTokenInformation(); 
     } 
    } 

    //check whether login/out. 
    public static boolean isLoggedIn() { 
     Session session = Session.getActiveSession(); 
     return (session != null && session.getAccessToken() != null && session.getAccessToken().length() > 1); 
    } 

    //In your create you might do this 
    ...... 
    Session session = Session.getActiveSession(); 
    if (session == null) { 
     if (_savedInstanceState != null) { 
      session = Session.restoreSession(this, null, 
        _statusCallback, _savedInstanceState); 
     } 
     if (session == null) { 
      session = new Session(this); 
     } 
     Session.setActiveSession(session); 
     if (session.getState().equals(SessionState.CREATED_TOKEN_LOADED)) { 
      session.openForRead(new Session.OpenRequest(_fragment) 
        .setCallback(_statusCallback)); 
     } 
    } 
    ..... 
+0

當我檢查它,我得到Session.getActiveSession.isOpened爲null。任何想法爲什麼? – user1282637

+0

已經做了一些更新。 – TeeTracker

+0

onCreate代碼是做什麼的?當你註銷時,isOpened會返回null還是false?當我登錄時,我變得真實,但是當我登出時,我變得空了。 – user1282637

相關問題