2014-04-19 9 views
5

domande brevi:Twitter Application-Solo Auth con "portatore Token"

ho generato un token di accesso e un token di accesso segreto a apps.twitter.com per la mia applicazione. Come li uso per inviare una richiesta a https://api.twitter.com/1.1/statuses/user_timeline.json?

Che cosa è un token bearer compreso di?? È il token di accesso o il token di accesso ? O una codifica dei due?



po 'di contesto:

Sto cercando di fare una domanda che scarica tweets dal mio twitter timeline, senza che l'utente app dover autenticarsi con il proprio account Twitter. Capisco che devo utilizzare l'autenticazione Application-Solo, e che la documentazione (https://dev.twitter.com/docs/auth/application-only-auth) afferma che ho bisogno di usare una chiave consumatori and Secret consumatori richiedere un portatore Token. Ma se ho già generato il token al apps.twitter.com utilizzando il pulsante generare:


Screen shot of my app on the apps.twitter.com page


sicuramente posso solo hardcode questi nel mio app e passaggio loro come il segnalino del portatore in qualche modo? Ti piace questa mi aspetto:

#define kTwitterBearerToken @"123456"  

NSURL *twitterFeedURL = [NSURL URLWithString:@"https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=kylejm_&count=10"]; 
NSMutableURLRequest *URLRequest = [NSMutableURLRequest requestWithURL:twitterFeedURL]; 
[URLRequest setHTTPMethod:@"POST"]; 
[URLRequest setValue:[NSString stringWithFormat:@"Bearer %@", kTwitterBearerToken] forHTTPHeaderField:@"Authorization"]; 
NSURLResponse *URLResponse; 
NSError *URLerror; 
NSData *tweetData = [NSURLConnection sendSynchronousRequest:URLRequest returningResponse:&URLResponse error:&URLerror]; 
NSError *JSONError; 
NSArray *tweets = [NSJSONSerialization JSONObjectWithData:tweetData options:0 error:&JSONError]; 
NSLog(@"%@", tweets); 


Grazie in anticipo per le risposte e aiuto!

Kyle

P.S. Ho guardato a STTwitter, ma penso che sia un po 'inutile usarlo quando quello che sto cercando di ottenere è così semplice (almeno sembra semplice passare solo il token pre-generato a me comunque) ...

+1

per l'autenticazione app-only, non è necessario il token di accesso e il segreto dei token di accesso, solo la chiave del consumatore e il segreto del consumatore sono adeguati. Puoi recuperare i tweet per tutti gli utenti i cui tweet non sono protetti. Considerare i limiti di velocità in considerazione. – Vishal

+0

Grazie a @Vishal. Ho ragione nel dire che usi la chiave del consumatore e il segreto per [richiesta] (https://dev.twitter.com/docs/api/1.1/post/oauth2/token) un token al portatore? Il token al portatore è completamente diverso dai token generati su apps.twitter.com? – kylejm

+0

onestamente, ho dimenticato e attualmente non mi interessa la modalità dalla prospettiva dell'app, quindi spero che qualcuno più familiare possa rispondere. – Vishal

risposta

0

Ecco i miei pensieri sulla cronologia di base per l'app. Ci sto pensando mentre scrivo così da portare con me ...

In fase di avvio controlla se hai memorizzato nella cache un token al portatore (probabilmente è una buona idea archiviarlo nel portachiavi e non nelle impostazioni predefinite dell'utente) .. ..

NO: se non c'è gettone portatore, fare la chiamata delineato here al punto 2. e quindi persistono al portachiavi poi continuare ...

sI: tornare indietro dal negozio portachiavi permanente * alla continua ...

Ora che si dispone di un token portante, è necessario creare una stringa codificata Base64 (iOS ha metodi da utilizzare) e utilizzare tale codifica d stringa nella richiesta dalle pagine precedentemente collegate Passaggio 3.

Se in qualsiasi momento è necessario reimpostare il token bearer, ad esempio se sono stati rilevati alcuni accessi non riusciti e si desidera fornire un flusso per l'utente per tentare di risolverlo, è presente una richiesta di chiamata per invalidare il token al portatore e quindi basta richiederlo, essenzialmente ripetendo il flusso iniziale.

Come menzionato da altri, Twitter ha alcune fastidiose limitazioni tariffarie, quindi è probabilmente meglio memorizzare nella cache i risultati del flusso restituito e usarli per la visualizzazione, quindi utilizzare una chiamata a frequenza limitata per scoprire il numero di tweet in un intervallo di date in modo da poter determinare se è necessario aggiornare i dati memorizzati nella cache. Questo è solo un pensiero su come gestirlo. Sono sicuro che ci saranno altri che verranno visualizzati dai documenti API.

Speranza che aiuta ... :)

  • oh sì, portachiavi. C'è un codice di esempio decente per recuperare/scrivere/cancellare le voci del portachiavi in ​​un'app. Ugualmente: GitHub.
1

Per ottenere token di accesso per l'applicazione Twitter solo l'autenticazione:

Per maggiori dettagli: Twitter-App-Only-Authentication-iOS

  1. Creare un'applicazione sul "https://apps.twitter.com" acount
  2. Get "kConsumerKey" e "kConsumerSecretKey"
  3. Ottieni Base64EncodedBearerToken utilizzando "kConsumerKey" e "kConsumerSecretKey"
  4. Marchio "kTwitterAuthAPI" chiamata con "Basic autorizzazione"
  5. Get "access_token" e utilizzarlo in "portatore di autorizzazione" chiamate

Scopri i code per ulteriori chiarimenti !