Facebook iOS SDK:无法使用FBRequest';s请求上载照片:

Facebook iOS SDK:无法使用FBRequest';s请求上载照片:,ios,facebook,facebook-graph-api,facebook-ios-sdk,Ios,Facebook,Facebook Graph Api,Facebook Ios Sdk,我的iPhone应用程序中有一张本地照片,我想将其上传到Facebook上专用于我的应用程序的特定相册中 问题:我的应用程序名以“照片”一词结尾,因此默认的Facebook相册是app\u name Photos Photos——显然是个问题 目标:我想创建一个新相册,将其ID存储在NSUserDefaults中,并(在运行时进行一些验证后)将其用于将来从应用程序上载的所有照片 我所在的位置:我可以通过Open Graph,使用我想要的名称和描述制作新相册,并且可以检索其ID。我还可以很容易地上

我的iPhone应用程序中有一张本地照片,我想将其上传到Facebook上专用于我的应用程序的特定相册中

问题:我的应用程序名以“照片”一词结尾,因此默认的Facebook相册是
app\u name Photos Photos
——显然是个问题

目标:我想创建一个新相册,将其ID存储在
NSUserDefaults
中,并(在运行时进行一些验证后)将其用于将来从应用程序上载的所有照片

我所在的位置:我可以通过Open Graph,使用我想要的名称和描述制作新相册,并且可以检索其ID。我还可以很容易地上传照片。然而,我不能弄清楚的是如何指定上传照片的最终位置

代码:这是我的照片上传代码,其中有一些结果在中进行了评论。我假设这就是我的问题所在,因为专辑制作等工作都很完美

- (void)postPhotosToFacebook:(NSArray *)photos withAlbumID:(NSString *)albumID {

    // Just testing with one image for now; I'll get in to multiple later..
    UIImage *image = [photos lastObject];

    FBRequest *imageUploadRequest = [FBRequest requestForUploadPhoto:image];

    // CALL OUT: I'm guessing my problem is here - but I just don't know!
    [[imageUploadRequest parameters] setValue:albumID
                                       forKey:@"album"];

    DebugLog(@"imageUploadRequest parameters: %@",[imageUploadRequest parameters]);

    // Results of DebugLog:
    // imageUploadRequest parameters: {
    //     album = 10151057144449632;
    //     picture = "<UIImage: 0xc6b6920>";
    // }
    // The album data returns correctly using FB's Graph API explorer tool,
    // so I know it's a legit album.
    // https://developers.facebook.com/tools/explorer

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

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

             if (!error) {

                 DebugLog(@"Photo uploaded successfuly! %@",result);

                 // Results of DebugLog:
                 // 
                 // Photo uploaded successfuly! {
                 //     id = 10151057147399632;
                 //     "post_id" = "511304631_10151057094374632";
                 // }
                 // Again, the photo at that ID shows up correctly, etc -
                 // BUT it's in the wrong album! It shows up in the default app album.

             } else {

                 DebugLog(@"Photo uploaded failed :( %@",error.userInfo);
             }

         }];

    [connection start];

}
-(void)照片后处理Facebook:(NSArray*)照片与albumID:(NSString*)albumID{
//现在只使用一个图像进行测试;稍后我将使用多个图像进行测试。。
UIImage*image=[photos lastObject];
FBRequest*imageUploadRequest=[FBRequestForUploadPhoto:image];
//大声说:我猜我的问题在这里-但我只是不知道!
[[imageUploadRequest参数]设置值:albumID
福克斯:@“专辑”];
调试日志(@“imageUploadRequest参数:%@,[imageUploadRequest参数]);
//调试日志的结果:
//imageUploadRequest参数:{
//相册=101510571449632;
//图片=”;
// }
//使用FB的Graph API explorer工具正确返回唱片集数据,
//所以我知道这是一张合法的专辑。
// https://developers.facebook.com/tools/explorer
FBRequestConnection*连接=[[FBRequestConnection alloc]init];
[连接添加请求:imageUploadRequest
completionHandler:^(FBRequestConnection*连接,id结果,NSError*错误){
如果(!错误){
调试日志(@“照片上传成功!%@”,结果);
//调试日志的结果:
// 
//照片上传成功{
//id=10151057147399632;
//“post_id”=“511304631_1015105709437463732”;
// }
//同样,该ID处的照片显示正确,等等-
//但是它在错误的相册中!它显示在默认的应用程序相册中。
}否则{
调试日志(@“照片上传失败:(@),错误。userInfo);
}
}];
[连接启动];
}
猜测:我猜我的问题在于如何将我的相册ID参数分配给图像请求……但我没有任何线索


你可以看到,这应该是可能的。

啊,太好了。我用一些老式的、直接的修补方法解决了这个问题

鉴于没有关于如何将“album”值应用于FBRequest的实际说明,我不太愿意将其称为bug,但无论哪种方式,我都需要一种不同的方法——在本例中,只需创建一个通用的Open Graph HTTP请求并填写所有图像信息

这种方法没有真正的缺点;除了不能使用requestForUploadPhoto:procility方法之外

下面是我对正确方法的实现(删除的代码被注释掉):


Thx在迁移到SDK 3.1时,我一直在努力解决这个问题。因为我试图让它与
requestForUploadPhoto
God一起工作,这为我节省了很多时间。我不明白Facebook为什么没有在他们的API教程中包含这一点。你所做的非常简单,工作非常好。谢谢!我非常同意上面的命令我昨天花了一整天的时间为SDK 3.13设置了一个复杂的opengraph和image暂存设置,然后偶然发现了你的代码。Twitter花了10分钟,Facebook花了一整天。这应该能告诉你一些关于他们程序员的事情。
- (void)postPhotosToFacebook:(NSArray *)photos withAlbumID:(NSString *)albumID {

    UIImage *image = [photos lastObject];

//    FBRequest *imageUploadRequest = [FBRequest requestForUploadPhoto:image];
//    
//    [[imageUploadRequest parameters] setValue:albumID
//                                       forKey:@"album"];
//    
//    DebugLog(@"imageUploadRequest parameters: %@",[imageUploadRequest parameters]);

    NSString *graphPath = [NSString stringWithFormat:@"%@/photos",albumID];

    DebugLog(@"graphPath = %@",graphPath);

    NSDictionary *parameters = [NSDictionary dictionaryWithObjectsAndKeys:
                                image,@"picture",
                                nil];

    FBRequest *request = [FBRequest requestWithGraphPath:graphPath
                                              parameters:parameters
                                              HTTPMethod:@"POST"];

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

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

             if (!error) {

                 DebugLog(@"Photo uploaded successfuly! %@",result);

             } else {

                 DebugLog(@"Photo uploaded failed :( %@",error.userInfo);
             }

         }];

    [connection start];

}