2015-04-23 10 views
6

Sono in grado di accedere a Twitter attraverso la mia applicazione utilizzando questo codice Twitter Tessuto:Come si memorizza e si accede a una sessione di accesso a Twitter Fabric (iOS/Swift)?

let logInButton = TWTRLogInButton(logInCompletion: { 
     (session: TWTRSession!, error: NSError!) in 
      // play with Twitter session 
      if (session != nil) { 
       println("signed in as \(session.userName)"); 
       self.TWUsernameLabel.text = "Logged in as @" + session.userName 
     } else { 
      println("error: \(error.localizedDescription)"); 
     } 
    }) 

quando clicco sul pulsante di accesso, mi viene richiesto di approvare il login e poi mi log in, o sa Ho già approvato il login e mi ha registrato. Funziona come un vero e proprio fascino e ci sono voluti tutti e dieci i minuti per l'installazione. Stupefacente.

Ho già un accesso via e-mail per accedere all'app. Mi piacerebbe memorizzare l'account Twitter di un utente registrato in quello stesso database, quindi quando un utente accede con la sua email, conosco già il suo Twitter (se ha effettuato l'accesso prima) e non è necessario accedere nuovamente . Il motivo per cui faccio l'accesso all'e-mail è perché Twitter è una funzionalità importante nella mia app, ma non è un requisito totale.

Il problema è che non ho idea di come accedere a session al di fuori del momento in cui si fa clic sul pulsante e logInCompletion si attiva e non so quali variabili memorizzare al momento dell'accesso iniziale/controllo sull'utilizzo dell'applicazione.

Ho letto la documentazione di Twitter numerose volte, ma non è scritto in modo rapido, quindi è piuttosto confuso. Qualche idea? Grazie

risposta

3

Se non v'è attualmente una sessione attiva si dovrebbe essere in grado di accedervi, proprio come i documenti dicono

Twitter.sharedInstance().session() 

Se l'utente non è connesso a tale metodo restituirà zero. Se vuoi sapere se qualcuno è già autenticato, controlla se questo metodo restituisce o meno un valore.

+0

Bene che era semplice. Grazie! Ma prima di controllare questa come soluzione, c'è qualche motivo per archiviare qualche tipo di informazione di Twitter nel mio database utente? Ho intenzione di memorizzare il nome utente per ogni evenienza, ma sto parlando da una prospettiva di sessione/accesso. Dovrei conservare una chiave o qualcosa del genere? (Sto pensando a come memorizzare un id di sessione e poi a controllarlo rispetto a ciò che viene memorizzato su un computer.) È possibile che questo sistema sia progettato specificamente per evitarlo. Non ne sono sicuro. Pensieri? – Andrew

+0

No, non lo memorizzerei. Twitter lo sta già facendo per noi e sono certo che lo gestiranno in modo più sano di quanto tu o io potremmo fare con la nostra implementazione. Se esiste una sessione, vengono registrati su Twitter. Se non lo è, non lo sono. Dovresti prendere la loro API per la sua parola su questo. – Dare

+0

Questo è quello che pensavo. Grazie ancora. – Andrew

1

Il kit Twitter presenta automaticamente una schermata di accesso se l'utente non ha effettuato l'accesso (nessuna sessione esiste ..). Tuttavia, prima di chiamare qualsiasi API futura, è sufficiente verificare se la sessione è valida o meno. In alcune API, potresti dover passare anche questa sessione.

if ([[Twitter sharedInstance] session]) { 

     TWTRShareEmailViewController *shareEmailViewController = 
     [[TWTRShareEmailViewController alloc] 
     initWithCompletion:^(NSString *email, NSError *error) { 
      NSLog(@"Email %@ | Error: %@", email, error); 
     }]; 

     [self presentViewController:shareEmailViewController 
          animated:YES 
         completion:nil]; 
    } else { 
     // Handle user not signed in (e.g. attempt to log in or show an alert) 
    } 
} 

Puoi anche non c'è bisogno di preoccuparsi di archiviazione e la gestione access token e access token secret.

+0

Ciao! Sto cercando di ottenere la sessione di Twitter utilizzando questo codice [[Twitter sharedInstance] session].Ho installato il kit di Twitter con pod: pod 'Fabric' pod 'TwitterKit'. Ma quando corro la build non è riuscita: "Uso dell'identificatore non dichiarato Twitter". Ecco come l'ho importato #import . Mi potete aiutare per favore? –

+0

Hai scritto: '#import '? – NSPratik

+0

No. Devo aggiungerlo? –

0

Per accedere al authToken, nome utente e l'ID utente per il login sessione utente a Swift 4 è:

Twitter.sharedInstance().logIn(completion: { (session, error) in 
    if (session != nil) { 
     print(session!.authToken) 
     print(session!.userName) 
     print(session!.userID) 
    } else { 
     print(error?.localizedDescription) 
    } 
}) 
Problemi correlati