2010-08-02 5 views
5

Sono riuscito a implementare Facebook connect sull'app per iPhone e consentire all'utente di caricare un aggiornamento di stato tramite l'app. Ora desidero includere una funzionalità che consenta il caricamento di foto insieme a un sottotitolo o all'aggiornamento di stato. Qualcuno conosce il codice rilevante per questo?Caricamento foto con didascalia o stato su Facebook sull'app per iPhone

Penso che dovrei usare l'API photos.upload in FB ma non sono sicuro di come. La documentazione di Facebook sembra tutto molto generica senza codice specifico per lo sviluppo di iPhone. Qualsiasi assistenza o codice di esempio deve essere apprezzato.

risposta

10

Questo snippet seguente viene preso dallo facebook-ios-sdk. Supponendo che la classe ha già un oggetto di facebook, questo metodo per caricare una foto da un URL (cambiamento come necessario):

-(IBAction) uploadPhoto: (id)sender { 
    NSString *path = @"http://www.facebook.com/images/devsite/iphone_connect_btn.jpg"; 
    NSURL *url = [NSURL URLWithString:path]; 
    NSData *data = [NSData dataWithContentsOfURL:url]; 
    UIImage *img = [[UIImage alloc] initWithData:data]; 

    NSMutableDictionary * params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
            img, @"picture", 
            nil]; 
    [facebook requestWithMethodName: @"photos.upload" 
         andParams: params 
        andHttpMethod: @"POST" 
         andDelegate: self]; 
    [img release]; 
} 

Per inviare una didascalia con la foto è necessario aggiungere il tasto del parametro "messaggio" seguito dal testo della didascalia. Cambiare params come qui di seguito dovrebbe raggiungere questo obiettivo:

NSMutableDictionary * params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
           img, @"picture", 
       @"my photo's caption text here.", @"message" 
           nil]; 
+0

Sto avendo difficoltà ad utilizzare il codice di esempio da facebook. Ricevo costantemente un codice di errore Impossibile completare l'operazione. (Errore facebookErrDomain 101.)" UserInfo = {0x4b46da0 request_args = ( {key = metodo; value = "photos.upload"; }, { chiave = SDK; value = ios; }, { key = "sdk_version"; value = 2; }, { chiave = formato; value = json;? } ), error_msg = chiave API valida, error_code = 101} Chiunque può far luce – Anthony

+1

Il mio primo pensiero è quello di assicurarmi che quando avviene il login, che @ "publish_stream "è una delle autorizzazioni richieste che consente di pubblicare all'utente. Sfortunatamente l'esempio github ha solo: _permissions = [[NSArray arrayWithObjects: @ "read_stream", @ "offline_access", nil] retain]; Aggiungi @ "publish_stream" e dovrebbe funzionare. – dredful

+0

Grazie mille per aver condiviso il codice. Mi ha davvero aiutato molto ... l'unico problema che sto affrontando è che la mia didascalia non viene caricata. Sto usando esattamente lo stesso codice che hai menzionato ma nulla viene caricato nel campo didascalia. – Tobias

0

È possibile caricare foto utilizzando iOS SDK di Facebook come segue:

FBSDKSharePhoto *photo=[[FBSDKSharePhoto alloc]init]; 
    photo.image=slideImage; 

    FBSDKSharePhotoContent *content = [[FBSDKSharePhotoContent alloc] init]; 
    content.photos = @[photo]; 

    [FBSDKShareDialog showFromViewController:self withContent:content delegate:self]; 

This works only if you configure iPhone Facebook settings. 
Problemi correlati