iOS Twitter SLRequiere el error del dominio de url de retorno -1012

Estoy intentando realizar reverse oauth para get tokens de acceso de Twitter para un server.

He descubierto cómo enviar la request y recibir una respuesta, pero cuando lo hago, me da este error:

Error: The operation couldn't be completed. (NSURLErrorDomain error -1012.) 

Miré esto y dice que significa que el usuario ha cancelado la request. No estoy seguro de cómo esto es posible, y no puedo entender cómo solucionarlo.

Aquí está mi código:

 NSTimeInterval timeStamp = [[NSDate date] timeIntervalSince1970]; NSNumber *timeStampObj = [NSNumber numberWithDouble: timeStamp]; NSString *oauth_nonce = [self genRandStringLength:32]; NSString *oauth_timestamp = [timeStampObj stringValue]; NSURL *feedURL = [NSURL URLWithString:@"https://api.twitter.com/oauth/request_token"]; NSDictionary *parameters = [NSDictionary dictionaryWithObjectsAndKeys: @"my key here", @"oauth_consumer_key", oauth_nonce, @"oauth_nonce", @"HMAC-SHA1", @"oauth_signature_method", oauth_timestamp, @"oauth_timestamp", @"1.0", @"oauth_version", @"reverse_auth", @"x_auth_mode", nil]; SLRequest *twitterFeed = [SLRequest requestForServiceType:SLServiceTypeTwitter requestMethod:SLRequestMethodPOST URL:feedURL parameters:parameters]; twitterFeed.account = self.userAccount; // Making the request [twitterFeed performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error) { dispatch_async(dispatch_get_main_queue(), ^{ // Check if we reached the reate limit if ([urlResponse statusCode] == 429) { NSLog(@"Rate limit reached"); return; } // Check if there was an error if (error) { NSLog(@"The Error is: %@", error.localizedDescription); return; } // Check if there is some response data if (responseData) { NSLog(@"%@", responseData); } }); }]; 

Debe haber algo simple que me falta, y esto me impide terminar un proyecto. ¡Cualquier ayuda sería genial, gracias!

El código de error -1012 puede deberse a un desafío de authentication. En mi caso, existía una count de Twitter en Configuración, pero no estaba conectada por algún motivo. Una vez que ingresé la contraseña para la count, todo funcionó a la perfección.

Conseguí este problema cuando envié una request a https://api.twitter.com/oauth/request_token con un extra nonce y firma en el encabezado. Específicamente, el siguiente código me dio un 1012, pero el siguiente fragment de código tuvo éxito. Este código se ha adaptado del ejemplo Reverse Twitter Auth de Sean Cook .

 /** * The first stage of Reverse Auth. * * In this step, we sign and send a request to Twitter to obtain an * Authorization: header which we will use in Step 2. * * @param completion The block to call when finished. Can be called on any thread. */ - (void)_step1WithCompletion:(TWAPIHandler)completion { NSURL *url = [NSURL URLWithString:TW_OAUTH_URL_REQUEST_TOKEN]; NSDictionary *dict = @{TW_X_AUTH_MODE_KEY: TW_X_AUTH_MODE_REVERSE_AUTH, TW_OAUTH_NONCE:[self nonce], TW_SIGNATURE_METHOD: TW_SIGNATURE_METHOD_VALUE, }; TWSignedRequest *step1Request = [[TWSignedRequest alloc] initWithURL:url parameters:dict requestMethod:TWSignedRequestMethodPOST]; TWDLog(@"Step 1: Sending a request to %@\nparameters %@\n", url, dict); [step1Request performRequestWithHandler:^(NSData *data, NSURLResponse *response, NSError *error) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ completion(data, error); }); } 

Los siguientes trabajos Tenga en count el cambio en el dict .

 /** * The first stage of Reverse Auth. * * In this step, we sign and send a request to Twitter to obtain an * Authorization: header which we will use in Step 2. * * @param completion The block to call when finished. Can be called on any thread. */ - (void)_step1WithCompletion:(TWAPIHandler)completion { NSURL *url = [NSURL URLWithString:TW_OAUTH_URL_REQUEST_TOKEN]; NSDictionary *dict = @{TW_X_AUTH_MODE_KEY: TW_X_AUTH_MODE_REVERSE_AUTH}; TWSignedRequest *step1Request = [[TWSignedRequest alloc] initWithURL:url parameters:dict requestMethod:TWSignedRequestMethodPOST]; TWDLog(@"Step 1: Sending a request to %@\nparameters %@\n", url, dict); [step1Request performRequestWithHandler:^(NSData *data, NSURLResponse *response, NSError *error) { dispatch_async(dispatch_get_global_queue(DISPATCH_QUEUE_PRIORITY_DEFAULT, 0), ^{ completion(data, error); }); }