2015-04-26 9 views
9

Sto cercando di familiarizzare con il nuovo IOS SDK di FB (4.0.1). L'ho integrato in un progetto IOS8 Swift e utilizzando FBSDKLoginButton per registrare gli utenti dentro e fuori. Voglio che l'applicazione salti mostrando il controller della vista di accesso se l'utente ha già effettuato il login.IOS Facebook SDK 4.01: Dovrei utilizzare FBSDKAccessToken.currentAccessToken() per verificare se l'utente ha effettuato l'accesso?

Dovrei semplicemente controllare il risultato di ritorno di FBSDKAccessToken currentAccessToken()? Restituisce 'nil' se un utente non ha effettuato l'accesso? La documentazione hanno il seguente da dire su questo metodo:

È possibile caricare questo con l'SDK da una cache portachiavi o da un'applicazione segnalibro quando la vostra applicazione lanci freddo. È necessario verificare la disponibilità di nel viewDidLoad del proprio controller di visualizzazione.

Qualcosa di simile:

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

Quindi questo suona come potrebbe essere quello che sto cercando, ma non posso davvero dire da questa descrizione. In che modo le persone buone di SO gestiscono questo caso d'uso comune? :)

-Nick

risposta

21

Sì, FBSDKAccessToken.currentAccessToken() è quello che dovrebbe essere il controllo, anche se il codice che avete non funzionerà come questo non restituisce un valore booleano. Avrete bisogno di qualcosa di simile a:

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

Inoltre, questo da solo funziona solo per quando l'applicazione si muove tra primo piano/sfondo (utente preme il tasto di casa). Se l'applicazione viene ucciso e fredda lanciato il token verranno persi a meno che non si implementa quanto segue didFinishLaunchingWithOptions nella AppDelegate:

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

Non è necessario preoccuparsi della portachiavi come questo viene gestito in modo automatico fornito di implementare le parti necessarie

Il seguente sito web ha un buon tutorial di ottenere un semplice esempio di lavoro: http://www.brianjcoleman.com/tutorial-how-to-use-login-in-facebook-sdk-4-0-for-swift/

+0

Questo è utile. Grazie! – Nick

+1

Hmm, sembra funzionare sul login "iniziale" di Facebook (quando l'utente deve uscire su Facebook e autorizzare la tua app), ma poi quando avvii successivamente l'app (e il pulsante dice "Esci") il token è ancora zero. –

+0

@AndrewK Questo non è quello che ho vissuto. Se stai vedendo il pulsante dire "Esci", currentAccessToken non dovrebbe essere nullo, altrimenti direbbe "Accedi con facebook". Sta usando il token di accesso dietro le quinte per visualizzare il testo del pulsante corretto. Forse potresti provare a postare il tuo codice in una nuova domanda. – jeffjv