2012-10-25 28 views
5

W poprzednich wersjach pakietu Facebook SDK mogliśmy sprawdzić, czy użytkownik jest nadal zalogowany przy użyciu tokenów. W nowej wersji 3.0 nie mogę znaleźć innego sposobu niż wywołanie openSession(), aby sprawdzić, czy użytkownik jest nadal zalogowany przez SSO. Ale openSession() automatycznie wywołuje login, jeśli użytkownik nie jest zapisany, a ja tego nie chcę. Chcę tylko sprawdzić logowanie jednokrotne. Jak mam to zrobic?Facebook android sdk 3.0 SSO

+0

muszę to zbyt. Nie mogę go znaleźć. WTF? –

+2

Po utworzeniu sesji można sprawdzić stan obiektu Session, wywołując session.getState, a jeśli stan jest w stanie CREATED_TOKEN_LOADED, oznacza to, że są zapisane i prawidłowe tokeny i można wywołać metodę open() bezpośrednio, bez żadnego interakcja z użytkownikiem. –

+4

Można również wywołać Session.openActiveSession (kontekst kontekstowy), który zgodnie z javadocs, otworzy sesję tylko wtedy, gdy nie wymaga interakcji użytkownika. –

Odpowiedz

8

Zrobiłem funkcję pomocnika, który w celu sprawdzenia, czy użytkownik jest nadal zalogowany (a właściwie ma aktywną sesję) dla mnie w mojej aplikacji:

public static boolean isActive() { 
    Session session = Session.getActiveSession(); 
    if (session == null) { 
     return false; 
    } 
    return session.isOpened(); 
} 
+0

To nie działa dla mnie, wciąż otrzymuję "{Stan sesji: ZAMKNIĘTE, token: {Token AccessToken: ACCESS_TOKEN_REMOVED uprawnienia: []}, appId: 234242323423434}" w sesji – Nativ

+0

I widzę, że niektórzy ludzie mają z tym problemy. Przede wszystkim upewnij się, że twoje klucze są poprawne w aplikacji FB. Przypominam sobie, że mam z tym jakiś problem. Mój bieżący przepływ, który działa dla mnie to 1. sprawdź isActive(); Nie? 2. wywołać openSession() 3. jeśli błąd i sesja! = Null -> session.closeAndClearTokenInformation(); –

+0

W jakim scenariuszu używałbyś openActiveSessionFromCache –

3

Można również wywołać Session.openActiveSession (kontekst kontekstowy), który zgodnie z javadocs, otworzy sesję tylko wtedy, gdy nie będzie wymagać interakcji użytkownika. - Ming Li

Powiązane problemy