Новая ошибка в iOS 5: WebKit отбросил неперехваченное исключение

#objective-c #ios #cocoa-touch #uiwebview #uiwebviewdelegate

#objective-c #iOS #cocoa-touch #uiwebview #uiwebviewdelegate

Вопрос:

Я пытаюсь загрузить a UIWebView с помощью URL-адреса авторизации Facebook OAuth и использую следующий код. Когда я UIWebView загружаю страницу входа в Facebook, я ввожу свои учетные данные, затем нажимаю кнопку «Войти». Когда я нажимаю кнопку, я получаю следующую ошибку:

WebKit отбросил неперехваченное исключение в WebView:decidePolicyForNavigationAction:request:frame:decisionListener:делегат: Приложение пыталось модально представить активный контроллер.

Этот же код отлично работает с iOS 4.3 и предыдущими версиями, но он не работает в iOS 5.0. Я не понимаю проблемы, кто-нибудь может мне помочь?

 NSString *redirectUrlString = @"http://www.facebook.com/connect/login_success.html";
NSString *authFormatString = @"https://graph.facebook.com/oauth/authorize?client_id=%@amp;redirect_uri=%@amp;scope=%@amp;type=user_agentamp;display=touch";

NSString *urlString = [NSString stringWithFormat:authFormatString, _apiKey, redirectUrlString, _requestedPermissions];
NSURL *url = [NSURL URLWithString:urlString];

NSLog(@"NSURL: %@", urlString);

NSURLRequest *request = [NSURLRequest requestWithURL:url];
[_webView loadRequest:request];
  

Ответ №1:

Используете ли вы код Рэя Вендерлиха? (FBFunLoginDialog).. Я обнаружил, что это исправляет это:

 -(void)checkLoginRequired:(NSString *)urlString {
    NSLog(@"Url: %@",urlString);
    if ([urlString rangeOfString:@"login.php"].location != NSNotFound amp;amp; [urlString rangeOfString:@"refid"].location == NSNotFound) {
            [_delegate displayRequired];
    } else if ([urlString rangeOfString:@"user_denied"].location != NSNotFound) {
         [_delegate closeTapped];
    }
}
  

Комментарии:

1. Большое вам спасибо, Карл Гудхью!

2. теперь я получаю эту ошибку что делать пожалуйста, помогите ПРЕДУПРЕЖДЕНИЕ БЕЗОПАСНОСТИ: «Пожалуйста, относитесь к указанному выше URL-адресу так же, как к своему паролю, и не делитесь им ни с кем. я так много искал в сети, но ничего не работает, некоторые говорят, что измените URL-адрес с http на https, а некоторые говорят, что в учетной записи Facebook отключен безопасный просмотр, но все это не работает. любая помощь

Ответ №2:

У меня та же проблема. Я пытаюсь представить контроллер представления сразу после увольнения.

 [self dismissModalViewControllerAnimated:YES];
  

Когда я пытаюсь сделать это без анимации, это работает отлично. используйте dismissViewControllerAnimated:завершение: