尝试发布图像时获取“FBSDKErrorDeveloperMessageKey =(#324)需要上传文件”

时间:2015-04-06 19:23:12

标签: ios xcode facebook facebook-sdk-4.0

我目前负责为社交网络应用程序实现几项新功能,其中一种是每当用户发布图像时,它自动也会在用户的脸书上发布(与Instagram完全相同)。到目前为止,我想出了这个:

FBSDKAccessToken *token = [FBSDKAccessToken currentAccessToken];
FBSDKGraphRequestConnection *connection = [[FBSDKGraphRequestConnection alloc] init];
NSDictionary *parameters = @{
                             @"message" : @"some text",
                             @"picture" : @"http://fanaru.com/doge/image/18353-doge-os-x-doge.jpg",
                             };

FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me/photos" parameters:parameters tokenString:token.tokenString version:@"v2.3" HTTPMethod:@"POST"];
[connection addRequest:request completionHandler:^(FBSDKGraphRequestConnection *connection, id result, NSError *error) {
    if(error)
        NSLog(@"%@", error);
    else
        NSLog(@"Success");
}];

[connection start];

但每次我运行它都会收到此错误:

  

错误Domain = com.facebook.sdk.core Code = 8“无法完成操作。(com.facebook.sdk.core错误8)”UserInfo = 0x166a64d0 {com.facebook.sdk:FBSDKGraphRequestErrorGraphErrorCode = 324,com.facebook.sdk:FBSDKGraphRequestErrorParsedJSONResponseKey = {
          body = {
              错误= {
              code = 324;
              message =“(#324)需要上传文件”;
              type = OAuthException;
          };
      };
      代码= 400;
  },com.facebook.sdk:FBSDKGraphRequestErrorHTTPStatusCodeKey = 400,com.facebook.sdk:FBSDKErrorDeveloperMessageKey =(#324)需要上传文件,com.facebook.sdk:FBSDKGraphRequestErrorCategoryKey = 0}

我知道我需要将图像上传到Facebook服务器,但我根本不知道如何做到这一点。已经从Facebook SDK文档中读取了大量页面,但仍然没有任何解决方案。理想情况下,我还需要专门为这个应用程序创建一个新的相册,但解决上面的问题是我现在主要关注的问题。

提前致谢。

编辑:就是这样,你知道,如果我将图形路径改为“我/饲料”它就可以正常工作,把图片作为链接发布,所以仍然不是我想要的。

1 个答案:

答案 0 :(得分:1)

它给你的错误是正确的。它不需要它要求您提供文件的URL,并且不包含该文件。如果您还没有图像,则需要先下载图像并将图像数据包含在参数中。

UIImage *image = (some picture I downloaded);
NSDictionary *parameters = @{
                               @"message" : @"some text",
                               @"picture" : UIImagePNGRepresentation(image),
                            };