Obteniendo feeds públicos de Twitter como JSON

Como parte de mi proyecto, debo mostrar la list de tweets en la aplicación iOS. Intenté con el código siguiente pero está devolviendo el JSON. El mismo código funciona bien con la versión 1. Ahora, la versión api de twitter es 1.1 y la advertencia de uno de otro que obtuve que TWRequest is deprecated . Esta desaprobación no es el problema de esto, incluso tengo lo mismo con SLRequest . Aquí mi problema es que necesito search los tweets de usuario particular de JSON sin authentication o con authentication

 TWRequest *postequest=[[TWRequest alloc]initWithURL:[NSURL URLWithString:@"https://api.twitter.com/1.0/statuses/user_timeline.json?screen_name=coolCracker&count=2"] parameters:nil requestMethod:TWRequestMethodGET]; [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { NSString *output; if ([urlResponse statusCode]==200) { NSError *err; NSDictionary *PublicTimeline=[NSJSONSerialization JSONObjectWithData:responseData options:0 error:&err]; output=[NSString stringWithFormat:@"HTTP response status: %li\nPublic timeline:\n%@",(long)[urlResponse statusCode],PublicTimeline]; } else { output=[NSString stringWithFormat:@"No feed HTTP response was: %li\n",(long)[urlResponse statusCode]]; } [self performSelectorOnMainThread:@selector(displayResults:) withObject:output waitUntilDone:NO]; }]; -(void)displayResults:(NSString *)text { NSLog(@"tweets feed %@",text); } 

Utilicé esto en mi trabajo y funcionó bastante bien. Usa STTwitter Descargue los files STTwitter aquí.

Coloca esto en tu vista didload:

  STTwitterAPI *twitter = [STTwitterAPI twitterAPIAppOnlyWithConsumerKey:@"your consumer key" consumerSecret:@"your secret key"]; [twitter verifyCnetworkingentialsWithSuccessBlock:^(NSString *bearerToken) { [twitter getUserTimelineWithScreenName:@"your twitter account name" successBlock:^(NSArray *statuses) { self.twitterFeedList = [NSMutableArray arrayWithArray:statuses]; [self->listView reloadData]; } errorBlock:^(NSError *error) { NSLog(@"%@", error.debugDescription); }]; } errorBlock:^(NSError *error) { NSLog(@"%@", error.debugDescription); }]; 

Hola, el código está trabajando para mí. Aunque TWRequest está en desuso, funciona por ahora. Más tarde, puede cambiarlo a SLRequest.

 ACAccountStore *accountStore = [[ACAccountStore alloc] init]; ACAccountType *twitterType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter]; // Request access from the user to use their Twitter accounts. [accountStore requestAccessToAccountsWithType:twitterType options:nil completion:^(BOOL granted, NSError *error) { if (granted == YES){ //get accounts to use. NSArray *accounts = [accountStore accountsWithAccountType:twitterType]; if ([accounts count] > 0) { NSLog(@"account: %@", accounts); ACAccount *loggedinaccount; loggedinaccount = accounts[0]; // get tweets TWRequest *postRequest=[[TWRequest alloc]initWithURL:[NSURL URLWithString:@"https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=HuntEthane&count=2"] parameters:nil requestMethod:TWRequestMethodGET]; [postRequest setAccount:loggedinaccount]; [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { NSString *output; if ([urlResponse statusCode]==200) { NSError *err; NSDictionary *PublicTimeline=[NSJSONSerialization JSONObjectWithData:responseData options:0 error:&err]; output=[NSString stringWithFormat:@"HTTP response status: %li\nPublic timeline:\n%@",(long)[urlResponse statusCode],PublicTimeline]; } else { output=[NSString stringWithFormat:@"No feed HTTP response was: %li\n",(long)[urlResponse statusCode]]; } [self performSelectorOnMainThread:@selector(displayResults:) withObject:output waitUntilDone:NO]; }]; } }else{ // show alert to inser user_name and password to login on twitter UIAlertView *alertTwitterAccount = [[UIAlertView alloc] initWithTitle:@"Enter with your twitter account" message:nil delegate:self cancelButtonTitle:@"Cancel" otherButtonTitles:@"Login", nil]; [alertTwitterAccount setAlertViewStyle:UIAlertViewStyleLoginAndPasswordInput]; [[alertTwitterAccount textFieldAtIndex:0] setPlaceholder:@"User"]; [alertTwitterAccount setDelegate:self]; [alertTwitterAccount setTag:1]; [alertTwitterAccount show]; } }]; 

Recuerde agregar frameworks a continuación para que este código funcione.

  • Twitter.FrameWork
  • Social.FrameWork
  • Cuentas.Framework
  • Security.FrameWork

    Si desea utilizar SLRequest lugar de TWRequest , reemplace la instrucción de request con la instrucción a continuación

    SLRequest *postRequest = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodGET URL:[NSURL URLWithString:@"https://api.twitter.com/1.1/statuses/user_timeline.json?screen_name=HuntEthane&count=2"]parameters:nil];

Avanzar de la manera más fácil es la adopción de Fabric.io de Tweeter, ya que la plataforma de desarrollo incluye Tweeter embedded : https://get.fabric.io/native-social

"La forma más fácil de traer contenido de Twitter a tu aplicación".

Sinceramente, no busqué en la parte de authentication necesaria para Fabric.io.

De lo contrario, debe seguir y respetar las reglas para acceder a las API de REST de Twitter o API de transmisión , ambas bien documentadas. Se requiere authentication OAuth .

Si desea evitar la authentication en su aplicación, puede escribir una simple API REST web que se encargará de la authentication y enviará tweets (seleccionados) a su aplicación iOS.

  1. Primero, deberás registrar una aplicación con Twitter
  2. Anote su key de consumidor y secreto de consumidor
  3. Escribe un API de server simple (proxy) en el idioma que prefieras.

Yo personalmente prefiero JavaScript en Node.js. Considere usar bibliotecas como express.js y oauth disponibles en npm , pero puede search npm para cualquier otro proxy / API de Twitter implementado. El código consiste esencialmente en get un token de acceso de OAuth y luego llamar a las API de twitter seleccionadas y respetar los límites de ratificación al almacenar en caching los resultados.