2012-09-29 38 views
6

Estoy tratando de publicar en Facebook usando openActiveSessionWithPublishPermissions, por lo que si el usuario no está conectado necesita primero registrarse y luego publicar el mensaje usando io6 Facebook Dialog nativo.Facebook ios6 completionHandler no llamado después de iniciar sesión

Lo que encontré es que puedo iniciar sesión, pero no se llama al controlador de finalización.

Otra cosa que me di cuenta, que cuando hago clic en el botón de inicio de sesión de nuevo, a continuación, llama controlador de finalización con el siguiente error FBSessionStateClosedLoginFailed.

Me referí a this post pero todavía no encontré una solución a mi problema.

NSArray *permissions = [NSArray arrayWithObjects:@"publish_stream", nil]; 
[FBSession openActiveSessionWithPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceEveryone allowLoginUI:YES completionHandler: 
^(FBSession *session, FBSessionState status, NSError *error) 
{ 

    switch (status) { 

        case FBSessionStateOpen: 
         { 
          [FBNativeDialogs presentShareDialogModallyFrom:currentController initialText:nil image:nil url:nil handler:^(FBNativeDialogResult result, NSError *error) {}]; 
         } 
         break; 
        default: 
         break; 
        } 
       }]; 

Respuesta

0

Usted debería tener que añadir lo siguiente:

[FBNativeDialogs presentShareDialogModallyFrom:currentController initialText:nil 
    image:nil url:nil handler:^(FBNativeDialogResult result, NSError *error) { 
    if (result==FBNativeDialogResultCancelled) { 
    UIAlertView  *alert=[[UIAlertView alloc]initWithTitle:@"Error" 
     message:@"Sending Cancelled" delegate:self cancelButtonTitle:@"OK" 
     otherButtonTitles: nil]; 
    [alert show]; 
} else if (result==FBNativeDialogResultSucceeded) { 
    UIAlertView *alert=[[UIAlertView alloc]initWithTitle:@"Succeed" 
    message:@"succeed" delegate:self cancelButtonTitle:@"OK" 
    otherButtonTitles: nil]; 
    [alert show]; 
}***}***]; 
5

Asegúrese de que ha implementado el método handleOpenUrl.

-(BOOL)application:(UIApplication *)application 
      openURL:(NSURL *)url 
sourceApplication:(NSString *)sourceApplication 
     annotation:(id)annotation { 

    return [[FBSession activeSession] handleOpenURL:url]; 

} 
+0

Hecho esto, ya he agregado este código. – andyPaul

Cuestiones relacionadas