2013-07-16 3 views
1

페이스 북 로그인이 필요한 응용 프로그램을 작성하고 있습니다. 먼저 사용자가 응용 프로그램을 열 때 로그인 할 수 있습니다. 그러나 응용 프로그램을 다시 시작한 후에는 세션을 검색 할 수 없습니다.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을 반환 할 수 있습니다.