Comment réparer l'erreur NSURLErrorDomain -1012 dans l'authentification?

Je traite le problème d'authentification avec le count Tumblr en utilisant [NSURLConnection sendAsynchronousRequest:queue:completionHandler:] pour envoyer la request d'authentification, mais ici, je rencontre un problème difficile:

  • Chaque fois que j'envoie la requête à la première fois , tout se passe parfaitement, mais quand la première authentification est faite, puis renvoyer la requête une deuxième fois , il y a "NSURLErrorDomain error -1012".
  • La page d'authentification est chargée dans une vue Web afin que l'authentification soit effectuée dans mon application sans browser. Mais il est intéressant que si le process s'exécute dans un browser il n'y a pas d'erreur, les erreurs ne se produisent que lors de l'utilisation de webview .
  • C'était bizarre que l'authentification se passe avec le même code, mais seulement la première authentification peut être faite, seulement si je réinstalle l'application puis-je l'authentifier encore, et après que le problème revienne.
  • J'ai fait tout ce que je peux pour résoudre le problème, je nettoie le cache et le cookie dans le webview, j'étape le process d'authentification pour voir les parameters, définissez la cachePolicy de la requête mais rien n'y fait.
  • J'ai également constaté que sur ios6 le process se passe sans erreur. Mais sur ios7 je reçois le -1012.
  • code -1012 me dit que l'user a annulé l'authentification, mais le process se passe automatiquement et je ne l'annule pas.

Je me request si le problème vient du NSURLConnection .

 - (void)authenticate:(NSSsortingng *)URLScheme WithViewController:(UIViewController *)con callback:(TMAuthenticationCallback)callback { self.threeLeggedOAuthTokenSecret = nil; self.hostViewController = con; self.callback = callback; [self emptyCookieJar]; NSSsortingng *tokenRequestURLSsortingng = [NSSsortingng ssortingngWithFormat:@"http://www.tumblr.com/oauth/request_token?oauth_callback=%@", TMURLEncode([NSSsortingng ssortingngWithFormat:@"%@://tumblr-authorize", URLScheme])]; NSLog(@"%@", tokenRequestURLSsortingng); NSMutableURLRequest *request = mutableRequestWithURLSsortingng(tokenRequestURLSsortingng); NSLog(@"%@", request); [[self class] signRequest:request withParameters:nil consumerKey:self.OAuthConsumerKey consumerSecret:self.OAuthConsumerSecret token:nil tokenSecret:nil]; [self openOAuthViewController]; NSURLConnectionCompletionHandler handler = ^(NSURLResponse *response, NSData *data, NSError *error) { NSInteger statusCode = ((NSHTTPURLResponse *)response).statusCode; if (error) { if (callback) { callback(nil, nil, error); } return; } NSLog(@"%d", statusCode); if (statusCode == 200) { self.threeLeggedOAuthCallback = callback; NSDictionary *responseParameters = formEncodedDataToDictionary(data); self.threeLeggedOAuthTokenSecret = responseParameters[@"oauth_token_secret"]; NSURL *authURL = [NSURL URLWithSsortingng: [NSSsortingng ssortingngWithFormat:@"http://www.tumblr.com/oauth/authorize?oauth_token=%@", responseParameters[@"oauth_token"]]]; [self initOAuthViewControllerWithURL:authURL]; } else { if (callback) { callback(nil, nil, errorWithStatusCode(statusCode)); } } }; [NSURLConnection sendAsynchronousRequest:request queue:[NSOperationQueue mainQueue] completionHandler:handler]; } 

Code ci-dessus, tout se passe normalement avant [NSURLConnection sendAsynchronousRequest:queue:completionHandler:] , et après cette méthode j'ai eu l'erreur dans completionHandler .