2011-01-05 24 views
20

Questa è probabilmente una domanda n00b, ma tuttavia ... Ho un problema con l'SDK di Facebook nella mia app per iPad: quando visualizzo una finestra di dialogo usando [facebook dialog:@"feed" andDelegate:self]; non vedo alcun modo Posso cambiare il titolo, il contenuto o l'URL di ciò che voglio condividere.Parametri di dialogo SDK iOS di Facebook

Nella loro Demo App, Facebook ha il seguente codice:

- (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]; 

} 

Tuttavia, quando si preme il pulsante di publishStream, nessuna di queste stringhe mostra nella finestra di dialogo! : S

C'è qualcosa che non sto facendo bene? tutto ciò che ho cambiato in quella Demo App era il kAppId di Facebook e lo Schema URL.

risposta

19

Ho avuto lo stesso problema. Questa è la soluzione che ho trovato: cambiare il codice in questo modo:

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

uso stream.publish e non alimentare.

+1

fantastico, grazie! come hai scoperto che avevi bisogno di stream.publish e non feed? –

+0

Hmm. Quando provo questo, la finestra di dialogo di Facebook ritorna e dichiara che "h" non è permesso ... qualunque cosa sia. :( –

+2

Come notato da @MrRogers, l'API stream.publish è deprecata. Dovresti seguire la sua [risposta corretta] (http://stackoverflow.com/questions/4610153/facebook-ios-sdk-dialog-parameters/6739887#6739887 –

1

Hmm .. Non ho lavorato con l'app di esempio, ma penserei che sarebbe necessario fare un POST se si desidera inviare qualcosa al muro. Scopri questa domanda e la mia risposta qui: Post to user's Facebook wall with iPhone using latest FBConnect SDK

In sintesi, ecco il metodo che ho usato:

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

come questo:

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

per inviare un commento per [user_id] s' muro .

+0

La domanda come usando 'dialog:' non lo sfondo 'requestWithGraphPath:' metodo. – Jann

30

Mi sono reso conto che questa è già una risposta, ma ho trovato che questa fosse la risposta corretta. Ne consegue che FB ha here. L'immagine e/o il collegamento vengono visualizzati nella finestra di dialogo. stream.publish non ha apportato questo cambiamento per me. Inoltre, la pagina dialog dice che lo stream.publish è vecchio.

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

Questa è la risposta corretta Stream.publish è datato. Il feed è corretto, ma l'esempio – Michael

+2

La finestra di dialogo si presenta, ma il messaggio è vuoto. Docs dice che il campo 'messaggio' viene ignorato ora: http://developers.facebook.com/docs/reference/dialogs/feed/ –

+0

Sciocco che non lo fanno aggiorna gli esempi per questo. Grazie per l'heads up –

Problemi correlati