How to post to a friends Wall using Facebook Graph API for iPhone

前端 未结 3 897
忘掉有多难
忘掉有多难 2020-12-28 10:42

I want to post something in the users friends wall.

I use this to post into the user wall

SBJSON *jsonWriter = [[SBJSON new] autorelease];

    NSDi         


        
相关标签:
3条回答
  • 2020-12-28 11:32

    @mAc

    You have to authorize facebook first. Then you implement 'FBRequestDelegate' methods to your class. Then make a request with graph API as given below

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

    Once your request succeeded, api will call the delegate method 'requestDdidLoad',

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

    Form the result you will get the frieds page ID

    0 讨论(0)
  • 2020-12-28 11:46

    Have you tried using,

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

    UPDATE:

    Posting on friends wall will no more work with Graph API. Instead you must use FBDialog.

    0 讨论(0)
  • 2020-12-28 11:46
    - (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];
    }
    
    0 讨论(0)
提交回复
热议问题