FBSession.activeSession.isOpen gibt NO zurück, obwohl sich der Benutzer angemeldet hat

7

Ich habe den gesamten iOS-Facebook-Login-Prozess in einem meiner iOS-Spiele implementiert. In der App können Sie sich entweder mit einem E-Mail-Konto oder über Facebook anmelden. Ich präsentiere gelegentlich eine Ansicht, die den Benutzer einlädt, sein Konto mit Facebook zu synchronisieren, wenn er sich mit einer E-Mail eingeloggt hat.

Hier ist der Code, den ich verwende, um zu bestimmen, ob ich diese Ansicht dem Benutzer anzeigen soll oder nicht:

%Vor%

Zuerst schien es gut zu funktionieren, aber es stellt sich heraus, dass FBSession.activeSession.isOpen zu irgendeinem Zeitpunkt NEIN zurückgibt, obwohl der Benutzer mit dem FB angemeldet ist.

Meine erste Vermutung wäre, dass der accessToken abläuft. Ich bin mir nicht sicher, ob es ein guter Anhaltspunkt ist, weil ich in meiner Bewerbung Folgendes mache: didFinishLaunchingWithOptions: Methode (wie Facebook empfiehlt):

%Vor%

So, jetzt habe ich keine Ahnung, wie ich dieses Problem reproduzieren oder beheben kann, irgendeine Idee? Ist es möglich, dass das Token nach dem Start der App abläuft? Wie wenn der Benutzer die App lange Zeit im Hintergrund hält?

    
MartinMoizard 10.04.2013, 08:55
quelle

1 Antwort

20

Es ist nur ein Facebook-Verhalten, Sie müssen die Sitzung jedes Mal, wenn Sie die App starten, wieder öffnen, Ihre Vermutung ist richtig. Es ist wegen des Token-Status, dass Sie [FBSession activeSession] überprüfen. isOpen-Status und wenn NO zurückgegeben wird, rufen Sie die openActiveSessionWithAllowLoginUI & lt; & lt; Ja, die gleiche Facebook-Methode, aber alle Status überprüft, die es zurückgibt.

Wenn die Sitzung zuvor geöffnet wurde, verwendet sie das gespeicherte Token, um die Sitzung erneut zu öffnen. Sie sollten sich keine Sorgen über die Anmeldebenutzeroberfläche machen, da sie nicht mehr angezeigt wird, da die Sitzung zuvor geöffnet wurde.

%Vor%

Und im App-Delegierten

%Vor%

Es ist eine schnelle Lösung und es funktioniert, Sie können es auch reproduzieren, indem Sie die Sitzung schließen, ohne den Token-Cache mit [[FBSession activeSession] close] zu löschen. Sie können die Token-Cache-Richtlinie auch wie hier beschrieben ändern Ссылка

    
German Gil 18.04.2013, 18:13
quelle