2012-10-20 14 views

risposta

24

Questo è il modo più semplice che ho trovato

- (void) postImageToFB:(UIImage*)image 
{ 
    NSData* imageData = UIImageJPEGRepresentation(image, 90);  
    NSMutableDictionary * params = [NSMutableDictionary dictionaryWithObjectsAndKeys: 
            @"This is my drawing!", @"message", 
            imageData, @"source", 
            nil]; 

    [FBRequestConnection startWithGraphPath:@"me/photos" 
           parameters:params 
           HTTPMethod:@"POST" 
          completionHandler:^(FBRequestConnection *connection, id result, NSError *error) { 

          }]; 
} 

se si desidera un commento sul muro di un amico, cambiare @"me/photos" da @"[friendID]/photos"

Poi, chiedere i permessi di pubblicare e chiamare il metodo

if ([FBSession.activeSession.permissions indexOfObject:@"publish_stream"] == NSNotFound) 
{ 
    // No permissions found in session, ask for it 
    [FBSession.activeSession reauthorizeWithPublishPermissions:[NSArray arrayWithObject:@"publish_stream"] 
               defaultAudience:FBSessionDefaultAudienceFriends 
              completionHandler:^(FBSession *session, NSError *error) 
    { 
     // If permissions granted, publish the story 
     if (!error) [self postImageToFB:currentDrawing]; 
    }]; 
} 
// If permissions present, publish the story 
else [self postImageToFB:currentDrawing]; 

Un "[nome app] Foto" verrà creato l'album, se non esiste

Funziona per me!

+4

senza bisogno di NSData, basta salvarlo come UIImage e modificare la chiave immagine come "immagine", grafico API gestirà il resto :-) –

+0

La tua compressione su UIImageJPEGRappresentazione dovrebbe essere tra 0-1.0 .. quindi invece di 90 vuoi dire .9 – badweasel

Problemi correlati