I have this code that can\'t send a Facebook request until now.
NSDictionary *firstDict = [NSDictionary dictionaryWithObjectsAndKeys:
@\"image\", @\"Type\",
If you're using latest iOS SDK For Facebook then using the below method you can publish image as a stream.
- (IBAction) publishStream: (id)sender { SBJSON *jsonWriter = [[SBJSON new] autorelease]; NSDictionary* actionLinks = [NSArray arrayWithObjects:[NSDictionary dictionaryWithObjectsAndKeys: @"Always Running",@"text",@"http://thinkdiff.net",@"href", nil], nil]; NSString *actionLinksStr = [jsonWriter stringWithObject:actionLinks]; NSDictionary* imageShare = [NSDictionary dictionaryWithObjectsAndKeys: @"image", @"type", @"http://thinkdiff.net/mahmud_small.jpg", @"src", @"http://thinkdiff.net", @"href", nil]; NSDictionary* attachment = [NSDictionary dictionaryWithObjectsAndKeys: @"a long run", @"name", @"The Facebook Running app", @"caption", @"it is fun", @"description", @"http://itsti.me/", @"href", [NSArray arrayWithObjects:imageShare, nil ], @"media", nil]; NSString *attachmentStr = [jsonWriter stringWithObject:attachment]; NSLog(attachmentStr); NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: kAppId, @"api_key", @"Share on Facebook", @"user_message_prompt", actionLinksStr, @"action_links", attachmentStr, @"attachment", nil]; [_facebook dialog: @"stream.publish" andParams: params andDelegate:self]; }
The image part should be another NSDictionary object.
NSDictionary* imageShare = [NSDictionary dictionaryWithObjectsAndKeys: @"image", @"type", @"http://thinkdiff.net/mahmud_small.jpg", @"src", @"http://thinkdiff.net", @"href", nil];
And in the attachment NSDictionary object must include imageShare object as array
[NSArray arrayWithObjects:imageShare, nil ]
This is because if you not include this as an array, Json parser avoid [] brackets as a result the publish functionality will not work. Remember the string needs to be a valid JSON string otherwise facebook api will not publish.