2013-07-16 125 views
1

我在寫一個需要Facebook登錄的應用程序。當他/她第一次打開應用程序時,我可以讓用戶登錄。但是,在重新啓動應用程序後,我無法檢索會話。我登錄的代碼如下:Android Facebook SDK記住會話

private static Session openActiveSession(Activity activity, boolean allowLoginUI, StatusCallback callback, List<String> permissions) { 
    OpenRequest openRequest = new OpenRequest(activity).setPermissions(permissions).setCallback(callback); 
    Session session = new Session.Builder(activity).build(); 
    if (SessionState.CREATED_TOKEN_LOADED.equals(session.getState()) || allowLoginUI) { 
     Session.setActiveSession(session); 
     session.openForRead(openRequest); 
     return session; 
    } 
    return null; 
} 

而且我用isLoggedIn方法時,應用程序才能打開了解,如果用戶登錄或沒有。

public static boolean isLoggedIn() { 
    Session session = Session.getActiveSession(); 
    if (session != null && session.isOpened()) { 
     return true; 
    } else { 
     return false; 
    } 
} 

但是,當應用程序被關閉並重新打開,這種方法不會返回true

如何檢索舊會話而不使用顯示一個彈出窗口,希望用戶的Facebook帳戶信息(如果他/她過去已登錄)。

+0

你是否在任何地方關閉會議? –

+0

不,我不是。如果您在關閉應用程序之前已經登錄,則下一次openActiveSession方法調用將打開前一個會話而不顯示登錄對話框。但是,如果您未登錄,則會打開一個登錄對話框。必須有一種方法,我可以知道用戶是否在以前的應用程序中打開登錄,而不顯示登錄對話框。 – sedran

+0

您可以調用Session.openActiveSessionFromCache,如果可以的話,它將使用緩存的訪問令牌打開活動會話,如果不可以,則返回null。 –

回答

4

您可以調用Session.openActiveSessionFromCache,只有存在高速緩存的訪問令牌時纔會打開活動會話,否則返回null。