2015-04-26 8 views
9

Ich versuche, mit dem neuesten IOS SDK (4.0.1) von FB vertraut zu werden. Ich habe es in ein IOS8 Swift-Projekt integriert und den FBSDKLoginButton verwendet, um Benutzer an- und abzumelden. Ich möchte, dass die Anwendung den Login-Ansicht-Controller überspringt, wenn der Benutzer sich bereits angemeldet hat.IOS Facebook SDK 4.01: Soll ich FBSDKAccessToken.currentAccessToken() verwenden, um zu überprüfen, ob der Benutzer angemeldet ist?

Sollte ich nur das Ergebnis der Rückgabe von FBSDKAccessToken currentAccessToken() überprüfen? Gibt dies "Null" zurück, wenn ein Benutzer nicht angemeldet ist? Die Dokumente werden im Anschluss an dem über diese Methode zu sagen:

Sie dies von einem Schlüsselbund Cache mit dem SDK oder von einer App Lesezeichen laden können, wenn Ihre Anwendung kalt gestartet. Sie sollten die Verfügbarkeit in ViewDidLoad Ihres View-Controllers überprüfen.

Etwas wie:

// LoginViewController.swift  
override func viewDidLoad() { 
     super.viewDidLoad() 
     if(FBSDKAccessToken.currentAccessToken()){ 
      //They are logged in so show another view 
     }else{ 
      //They need to log in 
     } 
    } 

So klingt wie es könnte sein, was ich suche, aber ich kann aus dieser Beschreibung nicht wirklich sagen. Wie gehen die guten Leute von SO mit diesem häufigen Anwendungsfall um? :)

-Nick

Antwort

21

Ja, FBSDKAccessToken.currentAccessToken() ist das, was Sie überprüft werden sollte, obwohl der Code, den Sie nicht, da dies funktioniert nicht über einen Boolean zurück. Sie müssen so etwas wie:

if(FBSDKAccessToken.currentAccessToken() != nil) { 
     //They are logged in so show another view 
    } else { 
     //They need to log in 
    } 

Auch dies allein funktioniert nur für, wenn die App bewegt sich zwischen Vorder-/Hintergrund (Benutzer trifft Home-Taste). Wenn die App getötet und kalt gestartet wird das Token verloren gehen, wenn Sie die folgenden in didFinishLaunchingWithOptions im AppDelegate implementieren:

return FBSDKApplicationDelegate.sharedInstance().application(application, didFinishLaunchingWithOptions: launchOptions) 

Sie brauchen nicht über den Schlüsselbund zu kümmern, da dies für Sie gehandhabt wird automatisch zur Verfügung gestellt Sie implementieren die notwendigen Teile.

Die folgende Website hat ein gutes Tutorial von einer einfachen Beispiel Arbeits bekommen: http://www.brianjcoleman.com/tutorial-how-to-use-login-in-facebook-sdk-4-0-for-swift/

+0

Dies ist hilfreich. Vielen Dank! – Nick

+1

Hmm, das scheint nach dem "ersten" Facebook-Login zu funktionieren (wenn der User nach Facebook gehen und seine App autorisieren muss), aber dann beim nächsten Start der App (und der Button "Abmelden") das Token ist immer noch Null. –

+0

@AndrewK Das habe ich nicht erlebt. Wenn Sie den Button "Abmelden" sehen, sollte currentAccessToken nicht Null sein, sonst würde es "Einloggen mit Facebook" heißen. Es verwendet das Zugriffstoken hinter den Kulissen, um den richtigen Schaltflächentext anzuzeigen. Vielleicht könnten Sie versuchen, Ihren Code in einer neuen Frage zu veröffentlichen. – jeffjv

Verwandte Themen