Search code examples
facebook-graph-apihttp-postfacebook-ios-sdk

How to post a photo. iOS Facebook SDK 3.1


I needed to publish a picture on my wall. The pic is generated in my iPad app.


Solution

  • This is the simplest way I've found

    - (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) {
    
                              }];
    }
    

    if you want to post on a friend's wall, change @"me/photos" by @"[friendID]/photos"

    Then, ask for permissions to publish and call the method

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

    An "[App Name] Photos" album will be created, if doesn't exist

    It does work for me!