Flujo de enlaces de historias utilizando SSO facebook: no se llama openURL

He implementado Single-Sign-On en mi aplicación iOS 4.3 con éxito. Ahora quiero publicar un enlace a la panetworking de Facebook de los usuarios para que cuando sus amigos que también son dueños de la aplicación hagan clic en el enlace, deberían ser networkingirigidos a mi aplicación. La forma en que interpreto http://developers.facebook.com/docs/mobile/ios/build/#deeplink , es que una de las funciones delegadas

- (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url, (pre iOS 4.2) - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation , (iOS 4.2+) 

se llamará y se podrá analizar el enlace compartido desde la key [target_link]. Sin embargo, no puedo hacer que esto funcione. Publicé exitosamente mi enlace a la fuente de noticias de los usuarios usando:

  NSDictionary* params=[[NSDictionary alloc] initWithObjectsAndKeys:myFacebookAppID,@"app_id", linkToPost,@"link",nil]; [_facebook dialog:@"feed" andParams:params andDelegate:self] 

La publicación aparece en mi feed de noticias, pero cuando hago clic en el enlace no se llama a ninguno de los methods delegates mencionados anteriormente. ¿Debo hacer algo especial con el enlace, he intentado agregar "fb: myFacebookAppID: //" delante del enlace, pero eso no funciona en absoluto. ¿He entendido mal algo?

Mi aplicación aún no está en vivo en AppStore y hay un campo en developers.facebook.com donde me piden que ingrese mi ID de AppStore, ¿podría ser este el problema? Si es así, ¿hay alguna solución? Quiero probar que esto funciona como debería antes de enviar mi aplicación a AppStore.

¡Gracias por tu ayuda!

Necesitas tener tu instace de Facebook en AppDelegate, por ejemplo:

 @interface FacebookAppDelegate : UIResponder <UIApplicationDelegate> @property (strong, nonatomic) UIWindow *window; @property (strong, nonatomic) UINavigationController *navigationController; @property (nonatomic, strong) Facebook *facebook; @end - (BOOL)application:(UIApplication *)application didFinishLaunchingWithOptions:(NSDictionary *)launchOptions { self.window = [[UIWindow alloc] initWithFrame:[[UIScreen mainScreen] bounds]]; // Override point for customization after application launch. self.viewController = [[FacebookViewController alloc] initWithNibName:@"FacebookViewController" bundle:nil]; self.facebook = [[Facebook alloc] initWithAppId:kAppId andDelegate:(id)self.viewController]; NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults]; if ([defaults objectForKey:@"FBAccessTokenKey"] && [defaults objectForKey:@"FBExpirationDateKey"]) { self.facebook.accessToken = [defaults objectForKey:@"FBAccessTokenKey"]; self.facebook.expirationDate = [defaults objectForKey:@"FBExpirationDateKey"]; } self.window.rootViewController = self.viewController; [self.window makeKeyAndVisible]; return YES; } 

Y dentro de AppDelegate tienes que implementar:

 - (BOOL)application:(UIApplication *)application handleOpenURL:(NSURL *)url { return [self.facebook handleOpenURL:url]; } - (BOOL)application:(UIApplication *)application openURL:(NSURL *)url sourceApplication:(NSString *)sourceApplication annotation:(id)annotation { return [self.facebook handleOpenURL:url]; } 

Y si desea implementar el protocolo en su propia class, tiene que llamar a Facebook sobre esto:

 FacebookAppDelegate *fbAppDelegate = (FacebookAppDelegate *)[[UIApplication shanetworkingApplication] delegate]; NSArray *permissions = [[NSArray alloc] initWithObjects:@"publish_stream",@"create_event",@"offline_access", nil]; [[fbAppDelegate facebook] authorize:permissions];