كيفية النشر لجدار الأصدقاء باستخدام Facebook Graph API لـ iPhone

StackOverflow https://stackoverflow.com/questions/4614920

سؤال

أريد نشر شيء ما في جدار الأصدقاء.

أستخدم هذا للنشر في جدار المستخدم

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" على صفك. ثم قدم طلبًا باستخدام Graph API على النحو الوارد أدناه

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

بمجرد أن ينجح طلبك ، ستتصل API بطريقة المندوب "requestDdidload" ،

-(void)request:(FBRequest *)request didLoad:(id)result {

    NSLog(@"Result: %@", result);

}

تشكيل النتيجة ستحصل على معرف صفحة Frieds

- (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];
}
مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top