iOS& Facebook:将图像和用户评论上传到墙上

时间:2011-12-10 21:19:20

标签: ios facebook sharekit

我有一个应用程序,它会截取自己的截图,我想将其发布在用户的墙上以及评论。

问题是,我似乎尝试了所有选项,但没有一个可行:

  • [facebook dialog:@"feed" ...]不起作用,因为您只能提供网址,而不能提供UIImage。

  • [facebook requestWithGraphPath ...]不起作用,因为系统未提示用户提供评论。

  • 我可以先(静静地)尝试使用requestWithGraphPath上传屏幕截图,然后将其新创建的网址提供给dialog,因为“不允许使用FBCDN图片流”。所有这些当然都是使用回调,其中包括登录回调,这会造成很大的混乱。

  • 我甚至尝试了ShareKit,但在应用奇怪地能够/无法登录之后忘了它。

请问,我如何分享图像和评论?

2 个答案:

答案 0 :(得分:0)

如果您还没有,您可能想在此地址尝试ShareKit的最新开发分支: https://github.com/Sharekit/Sharekit

社区对规范版本进行了重大改进。

答案 1 :(得分:0)

如果您使用的是Facebook最新的iOS SDK,请在Hackbook示例应用程序中查找APICallsViewController.m文件。有这种方法可以直接使用UIImage发布:

/*
 * Graph API: Upload a photo. By default, when using me/photos the photo is uploaded
 * to the application album which is automatically created if it does not exist.
 */
- (void) apiGraphUserPhotosPost {
    NSString *sourcePath = [[NSBundle mainBundle] resourcePath];
    NSString *file1 = [sourcePath stringByAppendingPathComponent:@"/MP1101frame1002.jpg"];
    UIImage *img = [[[UIImage alloc]initWithContentsOfFile:file1]autorelease];

    [self showActivityIndicator];
    currentAPICall = kAPIGraphUserPhotosPost;
    HackbookAppDelegate *delegate = (HackbookAppDelegate *) [[UIApplication sharedApplication] delegate]; 

    // Download a sample photo
    NSURL *url = [NSURL URLWithString:@"http://www.facebook.com/images/devsite/iphone_connect_btn.jpg"];
    NSData *data = [NSData dataWithContentsOfURL:url];
//    UIImage *img  = [[UIImage alloc] initWithData:data];   //here you can insert your UIImage
    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                   yourMessageHere, @"message",  //whatever message goes here
                                   img, @"picture",   //img is your UIImage
                                   nil];
    [[delegate facebook] requestWithGraphPath:@"me/photos"
                          andParams:params
                      andHttpMethod:@"POST"
                        andDelegate:self];
}