Facebook FBOpenGraphAction用户消息不起作用

时间:2013-03-14 22:40:01

标签: ios objective-c facebook-graph-api opengraph

我正在将照片上传为打开的图形对象,然后在返回URL后将其绑定到我的打开图形操作中。

到目前为止,一切都运行良好,但是 我无法获得自定义用户消息“TEST TEST TEST TEST!”出现。 我一直在从各个方面解决这个问题,似乎无法将其钉死。有什么想法吗?

enter image description here

    - (void)postPhotoThenOpenGraphAction {

        FBRequestConnection *connection = [[FBRequestConnection alloc] init];

        // First request uploads the photo.
        FBRequest *request1 = [FBRequest requestForUploadPhoto:[UIImage imageWithData:[NSData dataWithContentsOfFile:picture.pathSmall]]];

        [connection addRequest:request1 completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {

            if (!error) {
            } else {
                [self showFacebookFailedError];
            }
        }
                batchEntryName:@"photopost"];


        // Second request retrieves photo information for just-created
        // photo so we can grab its source.
        FBRequest *request2 = [FBRequest requestForGraphPath:@"{result=photopost:$.id}"];

        [connection addRequest:request2 completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {

             if (!error && result) {

                 NSString *source = [result objectForKey:@"source"];
                 [self postOpenGraphActionWithPhotoURL:source];

             } else {
                 [self showFacebookFailedError];
             }
         }
         ];

        [connection start];


       }

    - (void)postOpenGraphActionWithPhotoURL:(NSString*)photoURL {

        id<PTOGPicture> photoGraphObject = [self pictureObjectForPicture:self.picture];
        id<PTOGSharePicture> action = (id<PTOGSharePicture>)[FBGraphObject graphObject];

        action.photo = photoGraphObject;

        if (self.selectedPlace) {
            action.place = self.selectedPlace;
        }
        if (self.selectedFriends.count > 0) {
            action.tags = self.selectedFriends;
        }

        action.message = @"TEST TEST TEST TEST!";

        if (photoURL) {

            NSMutableDictionary *image = [[NSMutableDictionary alloc] init];

            [image setObject:photoURL forKey:@"url"];

            NSMutableArray *images = [[NSMutableArray alloc] init];
            [images addObject:image];

            action.image = images;
        }

        // Create the request and post the action to the.
        [FBRequestConnection startForPostWithGraphPath:@"me/myappapp:share"
                                           graphObject:action
                                     completionHandler:^(FBRequestConnection *connection,
                                                         id result,
                                                         NSError *error) {
           //... code taken out for brevity

        }];
       }

1 个答案:

答案 0 :(得分:0)

我有一个更简单的版本,可以满足您的需求:

首先,您可以根据需要创建操作对象:

- (void)shareOnFacebook {
    NSMutableDictionary<FBGraphObject> *action = [FBGraphObject graphObject];
    action[@"<OPEN_GRAPH_OBJ>"] = obj;
    action[@"image[0][url]"] = url;
    action[@"image[0][user_generated]"] = @"true";
    action[@"message"] = @"some message here";

    [FBRequestConnection startForPostWithGraphPath:@"me/<app_namespace>:<action>" graphObject:action completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
    }];
}

但是,要求此功能,您必须在操作设置页面上设置这两个权限:

enter image description here

我希望它有所帮助。