如何通过我的Facebook墙发布通知一些朋友?

时间:2014-04-28 09:18:43

标签: ios json facebook-graph-api facebook-sdk-3.1

我的要求是我需要通过我的应用程序在我的Facebook墙上发布隐私设置(通知特定的朋友)如何实现这一点我已按照以下代码

-(void)sendNotification

{

    CoreDataManager *coremanagerobj = [[CoreDataManager alloc]init];
    NSArray *useridarray = [coremanagerobj GetAllMembersList]; 
    NSMutableArray *arraylist = [[NSMutableArray alloc]init]; // it will have the selected friends id
    NSMutableDictionary  *dict = [[NSMutableDictionary alloc]init];

    for (NSManagedObject *obj in useridarray)
    {
        [ arraylist addObject:[obj valueForKey:@"memberId"]];
    }

    [dict setValue:@"CUSTOM" forKey:@"value"];
    [dict setValue:arraylist forKey:@"allow"];

    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict
                                                       options:NSJSONWritingPrettyPrinted 
                                                         error:&error];
    NSString *jsonString;
    if (! jsonData) {
        NSLog(@"Got an error: %@", error);
    } else {
        jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    }

    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                   @"sending notification", @"message",@"Posted via testApp", @"description",jsonData ,@"privacy",
                                   nil];

    // Make the request
    if ([FBSession.activeSession isOpen])
    {
        [FBSession openActiveSessionWithPublishPermissions:[NSArray arrayWithObject:@"publish_actions"]
                                           defaultAudience:FBSessionDefaultAudienceFriends
                                              allowLoginUI:YES
                                         completionHandler:^(FBSession *session, FBSessionState status, NSError *error)
         {
             if (!error && status == FBSessionStateOpen)
             {
                 [FBRequestConnection startWithGraphPath:@"/me/feed"
                                              parameters:params
                                              HTTPMethod:@"POST"
                                       completionHandler:^(FBRequestConnection *connection, id result, NSError *error)
                  {
                      if (!error)
                      {
                          // Link posted successfully to Facebook
                          NSLog(@"Result: %@", result);
                      }
                  }];

             }
         }];

    }
}

邮件未在FaceBook中发布。
我尝试使用 Breakpoint 进行调试 它显示“错误

NSError *domain: @"com.facebook.sdk" - code: 5  0x000000010958d110"

如果有人知道解决方案,请提前帮助我...

1 个答案:

答案 0 :(得分:0)

我改变了这样的代码,它为我工作!

   CoreDataManager *coremanagerobj = [[CoreDataManager alloc]init];
        NSArray *useridarray = [coremanagerobj GetAllMembersList];
        NSString *stringlist = [[NSString alloc]init];
        NSMutableDictionary  *dict = [[NSMutableDictionary alloc]init];

    for (int i=0;i<useridarray.count;i++)
    {
        NSManagedObject *obj = [useridarray objectAtIndex:i];
        NSString *value = [obj valueForKey:@"memberId"];

        if (i==[useridarray count]-1) {
            stringlist = [ stringlist stringByAppendingString:[NSString stringWithFormat:@"%@",value]];
        }
        else
        {
            stringlist =  [ stringlist stringByAppendingString:[NSString stringWithFormat:@"%@,",value]];
        }
    }

[dict setValue:@"CUSTOM" forKey:@"value"];
    [dict setValue: stringlist forKey:@"allow"];

    NSError *error;
    NSData *jsonData = [NSJSONSerialization dataWithJSONObject:dict
                                                       options:NSJSONWritingPrettyPrinted // Pass 0 if you don't care about the readability of the generated string
                                                         error:&error];
    NSString *jsonString;
    if (! jsonData) {
        NSLog(@"Got an error: %@", error);
    } else {
        jsonString = [[NSString alloc] initWithData:jsonData encoding:NSUTF8StringEncoding];
    }

    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                   @"sending notification", @"message",@"Posted via testApp", @"description", jsonString,@"privacy",
                                   nil];

    // Make the request
    if ([FBSession.activeSession isOpen])
    {
        [FBSession openActiveSessionWithPublishPermissions:[NSArray arrayWithObject:@"publish_actions"]
                                           defaultAudience:FBSessionDefaultAudienceFriends
                                              allowLoginUI:YES
                                         completionHandler:^(FBSession *session, FBSessionState status, NSError *error)
         {
             if (!error && status == FBSessionStateOpen)
             {
                 [FBRequestConnection startWithGraphPath:@"/me/feed"
                                              parameters:params
                                              HTTPMethod:@"POST"
                                       completionHandler:^(FBRequestConnection *connection, id result, NSError *error)
                  {
                      if (!error)
                      {
                          // Link posted successfully to Facebook
                          NSLog(@"Result: %@", result);
                      }
                  }];

             }
         }];

    }
}