2011-01-05 33 views
20

Probablemente sea una pregunta n00b, pero no obstante ... Tengo un problema con el SDK de Facebook en mi aplicación para iPad: cuando veo un cuadro de diálogo usando [facebook dialog:@"feed" andDelegate:self]; no veo ninguna manera Puedo cambiar el título, el contenido o la URL de lo que quiero compartir.Facebook iOS SDK Parámetros de diálogo

En su aplicación de demostración, Facebook tiene el siguiente código:

- (IBAction)publishStream:(id)sender { 

    SBJSON *jsonWriter = [[SBJSON new] autorelease]; 

    NSDictionary* actionLinks = [NSArray arrayWithObjects:[NSDictionary 
    dictionaryWithObjectsAndKeys: @"Always Running",@"text",@"http://itsti.me/", 
           @"href", nil], nil]; 

    NSString *actionLinksStr = [jsonWriter stringWithObject:actionLinks]; 
    NSDictionary* attachment = [NSDictionary dictionaryWithObjectsAndKeys: 
           @"a long run", @"name", 
           @"The Facebook Running app", @"caption", 
           @"it is fun", @"description", 
           @"http://itsti.me/", @"href", nil]; 
    NSString *attachmentStr = [jsonWriter stringWithObject:attachment]; 
    NSMutableDictionary* params = [NSMutableDictionary 
           dictionaryWithObjectsAndKeys: 
           @"Share on Facebook", @"user_message_prompt", 
           actionLinksStr, @"action_links", 
           attachmentStr, @"attachment", 
           nil]; 


    [_facebook dialog:@"feed" 
      andParams:params 
     andDelegate:self]; 

} 

Sin embargo, cuando se presiona el botón publishStream, ninguna de esas cadenas muestra en el diálogo! : S

¿Hay algo que no estoy haciendo bien? todo lo que modifiqué en esa aplicación de demostración fue Facebook kAppId y el esquema de URL.

Respuesta

19

Tuve el mismo problema. Esta es la solución que encontré: cambiar su código de esta manera:

[_facebook dialog:@"stream.publish" 
     andParams:params 
     andDelegate:self]; 

uso stream.publish y se alimenta.

+1

increíble, gracias! ¿Cómo descubrió que necesitaba stream.publish y no alimentar? –

+0

Hmm. Cuando intento esto, el diálogo de Facebook vuelve y declara que "h" no está permitido ... lo que sea que h. :( –

+2

Como señaló @MrRogers, la API stream.publish está en desuso. Debe seguir su [respuesta correcta] (http://stackoverflow.com/questions/4610153/facebook-ios-sdk-dialog-parameters/6739887#6739887) en su lugar. –

1

Hmm .. No he trabajado con la aplicación de muestra, pero creo que necesitaría hacer una POST si desea publicar algo en la pared. Confirmar esta pregunta y mi respuesta aquí: Post to user's Facebook wall with iPhone using latest FBConnect SDK

En resumen, aquí es el método que utiliza:

- (void)requestWithGraphPath:(NSString *)graphPath 
        andParams:(NSMutableDictionary *)params 
       andHttpMethod:(NSString *)httpMethod 
       andDelegate:(id <FBRequestDelegate>)delegate; 

así:

[_facebook requestWithGraphPath:@"[user_id]/feed" 
          andParams:[NSMutableDictionary dictionaryWithObject:@"test wall post" forKey:@"message"] 
         andHttpMethod:@"POST" 
         andDelegate:self]; 

para colocar un comentario a la pared [user_id] 's .

+0

La pregunta es como usar 'dialog:' no el método 'requestWithGraphPath:' de fondo. – Jann

30

Me di cuenta de que esto ya está respondido, pero me pareció que esta era la respuesta correcta. Sigue lo que FB tiene here. La imagen o el enlace aparece realmente en el cuadro de diálogo. stream.publish no hizo ese cambio por mí. Además, la página dialog dice que el stream.publish es antiguo.

NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
           @"http://developers.facebook.com/docs/reference/dialogs/", @"link", 
           @"http://fbrell.com/f8.jpg", @"picture", 
           @"Facebook Dialogs", @"name", 
           @"Reference Documentation", @"caption", 
           @"Dialogs provide a simple, consistent interface for apps to interact with users.", @"description", 
           @"Facebook Dialogs are so easy!", @"message", 
           nil]; 


[_facebook dialog:@"feed" 
     andParams:params 
     andDelegate:self]; 
+2

Esta es la respuesta correcta. Stream.publish está fechado. El feed es correcto, pero el ejemplo es incorrecto. – Michael

+2

El cuadro de diálogo aparece, pero el mensaje está vacío. Docs dice que el campo 'mensaje' se ignora ahora: http://developers.facebook.com/docs/reference/dialogs/feed/ –

+0

Tonto que no lo hacen actualice los ejemplos. Gracias por el aviso. –

Cuestiones relacionadas