El inicio de session de Facebook falla en UIWebView

En mi aplicación tengo que cargar una página web en UIWebView donde el usuario puede iniciar session con Facebook. El problema es que cuando el usuario hace clic en iniciar session, aparece la página en blanco.

¿Es posible volver a la primera página y estar conectado?

La página web funciona perfectamente en Safari y abre una nueva window y, después de iniciar session, la cierra y regresa al lugar que dejó.

EDITAR: se proporcionó una URL incorrecta a UIWebView

Creo que la muestra de facebook SDK para iOS hace el logging de la forma que desee. Consulte el enlace: facebook-iOS-SDK-sample: https://github.com/facebook/facebook-ios-sdk/tree/master/sample/Hackbook

Especialmente esta parte en https://github.com/facebook/facebook-ios-sdk/blob/master/sample/Hackbook/Hackbook/RootViewController.m

/** * Show the authorization dialog. */ - (void)login { HackbookAppDelegate *delegate = (HackbookAppDelegate *)[[UIApplication shanetworkingApplication] delegate]; if (![[delegate facebook] isSessionValid]) { [[delegate facebook] authorize:permissions]; } else { [self showLoggedIn]; } } 

Cuando click el button Iniciar session, se abrirá un cuadro de dialog de inicio de session y solicitará permiso. Esto es lo que parece: https://developers.facebook.com/docs/mobile/screenshots/ios/#iphone-native

Creo que la mejor manera de implementar la aplicación "relacionada con Facebook" es comenzar con el Hacbook. Es realmente una muestra agradable y detallada.

Si desea volver a cargar una URL específica después de que se cierre la window de inicio de session de Facebook para evitar quedar atrapado en una página en blanco, puede usar este código.

Primero incluya UIWebViewDelegate y configure su delegado en algún lugar de su código.

 [yourwebView setDelegate:self]; 

Luego use el método shouldStartLoadWithRequest para verificar la URL de request de close_popup.php que Facebook utiliza para cerrar su window emergente.

 - (BOOL)webView:(UIWebView *)webView shouldStartLoadWithRequest:(NSURLRequest *)request navigationType:(UIWebViewNavigationType)navigationType { NSString *urlString = [NSString stringWithFormat:@"%@", request]; if ([urlString rangeOfString:@"close_popup.php"].location == NSNotFound) { //The close_pop.php is not found. (Do nothing) } else { //Facebook closed the popup so we should load the page we now want the user to see. NSURL*url=[NSURL URLWithString:@"http://www.example.ca/thepageyouwanttoreload.html"]; NSURLRequest*request=[NSURLRequest requestWithURL:url]; [webView loadRequest:request]; } return YES; } 

¿Problema SSL? Según Joanne use el SDK de Facebook y obtendrá una gran cantidad de funcionalidades adicionales de forma gratuita, incluida la connection a través de la aplicación nativa de Facebook si está instalada.