2012-10-25 2 views
5

In früheren Versionen des Facebook SDK konnten wir überprüfen, ob ein Benutzer noch mit Tokens angemeldet ist. In der neuen Version 3.0 kann ich keinen anderen Weg finden, als openSession() aufzurufen, um zu überprüfen, ob der Benutzer noch mit SSO angemeldet ist. Aber openSession() ruft automatisch die Anmeldung auf, wenn der Benutzer nicht gespeichert wird und ich das nicht will. Ich möchte nur SSO prüfen. Wie mache ich das?Facebook Android SDK 3.0 SSO

+0

Ich brauche das auch. Kann es nicht finden. WTF? –

+2

Sobald Sie eine Sitzung erstellt haben, können Sie den Status des Sitzungsobjekts durch Aufrufen von session.getState überprüfen. Wenn sich der Status im Status CREATED_TOKEN_LOADED befindet, bedeutet dies, dass gespeicherte und gültige Token vorhanden sind. Sie können open() direkt aufrufen Benutzerinteraktion. –

+4

Alternativ können Sie Session.openActiveSession (Kontextkontext) aufrufen, was gemäß den Javadocs die Sitzung nur dann öffnet, wenn keine Benutzerinteraktion erforderlich ist. –

Antwort

8

Ich habe eine Hilfefunktion, die, wenn der Benutzer zu überprüfen, noch angemeldet ist (oder hat tatsächlich eine aktive Sitzung) für mich in meiner App:

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

Es funktioniert nicht für mich, ich bekomme immer "{Sitzungsstatus: CLOSED, Token: {AccessToken Token: ACCESS_TOKEN_REMOVED Berechtigungen: []}, AppId: 234242323423434}" in der Sitzung – Nativ

+0

I kann sehen, dass einige Leute Probleme damit haben. Stellen Sie zunächst sicher, dass Ihre Schlüssel in der FB-App korrekt sind. Ich erinnere mich, dass ich ein Problem damit hatte. Mein aktueller Fluss, der für mich funktioniert, ist 1. check isActive(); Nein? 2. rufe openSession() auf 3. Wenn Fehler & Sitzung! = Null -> session.closeAndClearTokenInformation(); –

+0

In welchem ​​Szenario würden Sie openActiveSessionFromCache verwenden –

3

Alternativ können Sie Session.openActiveSession (Kontextkontext) aufrufen, was gemäß den Javadocs die Sitzung nur dann öffnet, wenn keine Benutzerinteraktion erforderlich ist. - Ming Li