La actualización de twitter usando TWRequest da un error 403

Estoy usando el siguiente código para twittear en la línea de time del usuario usando iOS 5 Twitter API

// Crea un object de almacén de count. ACAccountStore * accountStore = [[ACAccountStore alloc] init];

// Create an account type that ensures Twitter accounts are retrieved. ACAccountType *accountType = [accountStore accountTypeWithAccountTypeIdentifier:ACAccountTypeIdentifierTwitter]; // Request access from the user to use their Twitter accounts. [accountStore requestAccessToAccountsWithType:accountType withCompletionHandler:^(BOOL granted, NSError *error) { if(granted) { // Get the list of Twitter accounts. NSArray *accountsArray = [accountStore accountsWithAccountType:accountType]; // For the sake of brevity, we'll assume there is only one Twitter account present. // You would ideally ask the user which account they want to tweet from, if there is more than one Twitter account present. // Grab the initial Twitter account to tweet from. ACAccount *twitterAccount = [accountsArray objectAtIndex:buttonIndex]; // Create a request, which in this example, posts a tweet to the user's timeline. // This example uses version 1 of the Twitter API. // This may need to be changed to whichever version is currently appropriate. TWRequest *postRequest = [[TWRequest alloc] initWithURL:[NSURL URLWithString:@"http://api.twitter.com/1/statuses/update.json"] parameters:[NSDictionary dictionaryWithObject:@"hello this is a tweet" forKey:@"status"] requestMethod:TWRequestMethodPOST]; // Set the account used to post the tweet. [postRequest setAccount:twitterAccount]; // Perform the request created above and create a handler block to handle the response. [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { NSString *output = [NSString stringWithFormat:@"%i", [urlResponse statusCode]]; [self performSelectorOnMainThread:@selector(TweetStatus:) withObject:output waitUntilDone:NO]; }]; } }]; 

Llevo más de un mes usando este método para probar la aplicación y solía funcionar bien sin problemas.

En pocas semanas, comenzó a devolver un error 403 en el siguiente método.

 [postRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { NSString *output = [NSString stringWithFormat:@"%i", [urlResponse statusCode]]; [self performSelectorOnMainThread:@selector(TweetStatus:) withObject:output waitUntilDone:NO]; }]; 

da el siguiente error:

 Error Domain=NSURLErrorDomain Code=-1012 "The operation couldn't be completed. (NSURLErrorDomain error -1012.)" UserInfo=0x1f8b3250 {NSErrorFailingURLKey=http://api.twitter.com/1/statuses/update.json, NSErrorFailingURLStringKey=http://api.twitter.com/1/statuses/update.json, NSUnderlyingError=0x1ed19f90 "The operation couldn't be completed. (kCFErrorDomainCFNetwork error -1012 

He buscado mucho y no pude encontrar ninguna solución o causa real para este problema.

Algunas notas para tener en count que podrían ayudar a comprender el problema:

  • la aplicación se usa para probar lo que significa que usamos el intercambio de Twitter y menciona mucho con otros usuarios.
  • el contenido para compartir no siempre es el mismo, por lo que no debe producirse ningún problema de duplicación ya que estábamos borrando la línea de time con frecuencia.

Gracias

Llevo más de un mes usando este método para probar la aplicación y solía funcionar bien sin problemas.

Creo que ese es el problema allí mismo. esta count que está probando podría haber sido marcada como spammer por otras personas.

Si usa otra count u otro teléfono y el código funciona, esa es la única explicación de mi amigo.

Buena suerte

El text que intentaste twittear debe ser similar al tuiteado previamente por ti, por lo tanto, obtienes este error. De acuerdo con la documentation aquí , el mismo text no se puede publicar más de una vez. introduzca la descripción de la imagen aquí

EDITAR:

También puede depender del número total de tweets como se menciona en su website.

Noté que estás usando la siguiente URL para publicar un tweet de tu usuario:

http://api.twitter.com/1/statuses/update.json

Esto está utilizando la versión 1.0 de la API de Twitter, que está en desuso y dejará de funcionar lentamente en los próximos meses.

En cambio, deberías intentar usar

https://api.twitter.com/1.1/statuses/update.json (Ha habido un cambio reciente en la API de Twitter . Ahora solo puede llamar usando HTTPS.)

Esto especificará la última versión de la API.