如何使用Facebook Graph API for iPhone发布到朋友墙

我想在用户朋友墙上张贴一些东西。

我用它来张贴到用户墙上

SBJSON *jsonWriter = [[SBJSON new] autorelease]; NSDictionary* actionLinks = [NSArray arrayWithObjects:[NSDictionary dictionaryWithObjectsAndKeys: @"Always Running",@"text",@"http://itsti.me/",@"href", nil], nil]; NSString *actionLinksStr = [jsonWriter stringWithObject:actionLinks]; NSDictionary* attachment = [NSDictionary dictionaryWithObjectsAndKeys: @"a long run", @"name", @"The Facebook Running app", @"caption", @"it is fun", @"description", @"http://itsti.me/", @"href", nil]; NSString *attachmentStr = [jsonWriter stringWithObject:attachment]; NSMutableDictionary* params = [NSMutableDictionary dictionaryWithObjectsAndKeys: @"Share on Facebook", @"user_message_prompt", actionLinksStr, @"action_links", attachmentStr, @"attachment",nil]; [facebook dialog:@"feed" andParams:params andDelegate:self]; 

但是我需要在我的朋友墙上张贴。 我怎样才能做到这一点

在这篇文章中,他们提到了关于targetId我必须做些什么。

你有没有尝试过使用,

 [facebook requestWithGraphPath:@"[friend_ID]/feed" andParams:params andHttpMethod:@"POST" andDelegate:self]; 

更新:

张贴在朋友墙上将无法使用Graph API。 相反,你必须使用FBDialog。

@苹果电脑

您必须先授权Facebook。 然后你执行“FBRequestDelegate”方法到你的class级。 然后用图API提出请求,如下所示

 [facebook requestWithGraphPath:@"/me/friends" andDelegate:self]; 

一旦你的请求成功,API将调用委托方法“requestDdidLoad”,

 -(void)request:(FBRequest *)request didLoad:(id)result { NSLog(@"Result: %@", result); } 

形成结果你会得到油炸页面的ID

 - (IBAction)InviteAction:(id)sender // Button action { if (!FBSession.activeSession.isOpen) { // if the session is closed, then we open it here, and establish a handler for state changes [FBSession openActiveSessionWithReadPermissions:nil allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState state, NSError *error) { if (error) { UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Invite friends process cancelled" message:nil delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alertView show]; } else if (session.isOpen) { [self InviteAction:sender]; } }]; return; } if (self.friendPickerController == nil) { // Create friend picker, and get data loaded into it. self.friendPickerController = [[FBFriendPickerViewController alloc] init]; self.friendPickerController.title = @"Pick Friends"; self.friendPickerController.delegate = self; } [self.friendPickerController loadData]; [self.friendPickerController clearSelection]; [self presentViewController:self.friendPickerController animated:YES completion:nil]; } - (void) performPublishAction:(void (^)(void)) action { if ([FBSession.activeSession.permissions indexOfObject:@"publish_actions"] == NSNotFound) { [FBSession.activeSession requestNewPublishPermissions:@[@"publish_actions"] defaultAudience:FBSessionDefaultAudienceFriends completionHandler:^(FBSession *session, NSError *error) { if (!error) { action(); } else if (error.fberrorCategory != FBErrorCategoryUserCancelled){ UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Permission denied" message:@"Unable to get permission to post" delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil]; [alertView show]; } }]; } else { action(); } } - (void)loginViewFetchedUserInfo:(FBLoginView *)loginView user:(id<FBGraphUser>)user { self.loggedInUser = user; } - (void)facebookViewControllerDoneWasPressed:(id)sender { NSMutableString *text = [[NSMutableString alloc] init]; for (id<FBGraphUser> user in self.friendPickerController.selection) { if ([text length]) { [text appendString:@","]; } [text appendString:[NSString stringWithFormat:@"%@",user.id]]; } //For post to friend's wall NSDictionary *params = @{ @"name" : @"Hello Please checkout this app", @"caption" : @" IOS APP", @"description" : @"", @"picture" : @"logo@2x.png", @"link" : @"http:www.google.com", @"to":text, }; // Invoke the dialog [FBWebDialogs presentFeedDialogModallyWithSession:nil parameters:params handler: ^(FBWebDialogResult result, NSURL *resultURL, NSError *error) { if (error) { NSLog(@"Error publishing story."); UIAlertView *alertshow = [[UIAlertView alloc]initWithTitle:@"Failed" message:@"Failed to Post" delegate:Nil cancelButtonTitle:@"ok" otherButtonTitles:nil]; [alertshow show]; } else { if (result == FBWebDialogResultDialogNotCompleted) { NSLog(@"User canceled story publishing."); UIAlertView *alertshow = [[UIAlertView alloc]initWithTitle:@"Failed" message:@"Failed to post on your friend wall" delegate:Nil cancelButtonTitle:@"ok" otherButtonTitles:nil]; [alertshow show]; } else { NSLog(@"Story published."); UIAlertView *alertshow = [[UIAlertView alloc]initWithTitle:@"Success" message:@"Posted on Friend wall" delegate:Nil cancelButtonTitle:@"ok" otherButtonTitles:nil]; [alertshow show]; } }}]; [self fillTextBoxAndDismiss:text.length > 0 ? text : @"<None>"]; } - (void)facebookViewControllerCancelWasPressed:(id)sender { [self fillTextBoxAndDismiss:@"<Cancelled>"]; } - (void)fillTextBoxAndDismiss:(NSString *)text { [self dismissModalViewControllerAnimated:YES]; }