2011-10-18 13 views
7

Próbuję załadować adres UIWebView z adresem URL autoryzacji OAuth na Facebooku i używam następującego kodu. Kiedy mój UIWebView ładuje się ze stroną logowania do Facebooka, wpisuję swoje dane uwierzytelniające, a następnie naciśnij przycisk "Zaloguj się". Kiedy naciśnij przycisk otrzymuję następujący błąd:Nowy błąd w iOS 5: WebKit odrzucił nieprzechwycony wyjątek

WebKit discarded an uncaught exception in the webView:decidePolicyForNavigationAction:request:frame:decisionListener:delegate: Application tried to present modally an active controller .

Ten sam kod działa poprawnie z iOS 4.3 i wcześniejszych wersjach, ale to nie działa w iOS 5.0. Nie rozumiem problemu, czy ktoś może mi pomóc?

NSString *redirectUrlString = @"http://www.facebook.com/connect/login_success.html"; 
NSString *authFormatString = @"https://graph.facebook.com/oauth/authorize?client_id=%@&redirect_uri=%@&scope=%@&type=user_agent&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]; 

Odpowiedz

22

Czy używasz kodu Ray Wenderlich? (FBFunLoginDialog) .. Stwierdziłem, że to naprawia:

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

Dziękuję bardzo, Karl Goodhew! –

+0

Dzięki to pomogło mi również ... :) Pozdrawiam ... :) :) –

+0

teraz otrzymuję ten błąd, co należy zrobić, proszę pomóż BEZPIECZEŃSTWO OSTRZEŻENIE: "Proszę traktować powyższy URL jak swoje hasło i nie udostępniaj go z każdym, szukałem tak dużo w sieci, ale nic nie działa, niektórzy mówią, zmień adres URL z http na https, a niektórzy mówią na Facebooku wyłączają bezpieczne przeglądanie, ale te wszystkie rzeczy nie działają. –

0

Mam ten sam problem. Próbuję przedstawić kontroler widoku zaraz po jego odrzuceniu.

[self dismissModalViewControllerAnimated:YES]; 

Kiedy próbuję zrobić to bez animacji, działa idealnie. użyj dismissViewControllerAnimated: zakończenie:

Powiązane problemy