Search code examples
facebook-graph-apiios6facebook-ios-sdk

How to post to a friend's wall in facebook iOS SDK 3.1?


I have the SDK 3.1 working for iOS 6 for posting status updates and I have the facebook user id of the person who I want to post on their wall.

I just want it to say "hi." to just one person's wall. I can target their feed with "/[id]/feed" but then I have to supply a graph object? if I use startForPostWithGraphPath() anyways.


Solution

  • I figured it out!

    First of course implement FBFriendPickerDelegate per here, unless you already have their friend ID somehow. http://developers.facebook.com/docs/howtos/filter-devices-friend-selector-using-ios-sdk/

    Then the important part, how to post to friend's wall:

    - (void)facebookViewControllerDoneWasPressed:(id)sender
    {
        NSString* fid;
        NSString* fbUserName;
    
        // get facebook friend's ID from selection. just gets 1 right now.
        for (id<FBGraphUser> user in friendPickerController.selection)
        {
            NSLog(@"\nuser=%@\n", user);
            fid = user.id;
    
            fbUserName = user.name;
        }
    
        //Make the post.
        NSMutableDictionary* params = [[NSMutableDictionary alloc] initWithObjectsAndKeys:@"Join me!", @"message", @"http://itunes.apple.com/my-super-app", @"link", @"My Super App", @"name", nil];
    
        NSLog(@"\nparams=%@\n", params);
    
        //Post to friend's wall.
        [FBRequestConnection startWithGraphPath:[NSString stringWithFormat:@"%@/feed", fid] parameters:params HTTPMethod:@"POST"
                              completionHandler:^(FBRequestConnection *connection, id result, NSError *error)
         {
             //Tell the user that it worked.
             UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Shared"
                                                                 message:[NSString stringWithFormat:@"Invited %@! error=%@", fbUserName, error]
                                                                delegate:nil
                                                       cancelButtonTitle:@"OK"
                                                       otherButtonTitles:nil];
             [alertView show];
         }
        ];
    
        //Close the friend picker.
        [self dismissModalViewControllerAnimated:YES];
    }