Подтвердить что ты не робот

Загрузите несколько фотографий в Facebook с помощью пакетного запроса

Я сделал следующий код со ссылкой на следующую ссылку , чтобы создать пакетный запрос для загрузки нескольких фотографий в Facebook.

У меня было какое-то решение для загрузки нескольких фотографий на Facebook через графический API Facebook.

CODE:

    NSString *jsonRequest1 = @"{ \"method\": \"POST\", \"relative_url\": \"me/photos\" , \"body\": \"Hello 1\", \"attached_files\": \"file1\" }";
    NSString *jsonRequest2 = @"{ \"method\": \"POST\", \"relative_url\": \"me/photos\" , \"body\": \"Hello 2\", \"attached_files\": \"file2\" }";
    NSString *jsonRequestsArray = [NSString stringWithFormat:@"[ %@, %@ ]", jsonRequest1, jsonRequest2];
    NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:jsonRequestsArray,@"batch",nil];
    [params setObject:UIImagePNGRepresentation(self.image1) forKey:@"file1"];
    [params setObject:UIImagePNGRepresentation(self.image2) forKey:@"file2"];
    [objFacebook requestWithGraphPath:@"me" andParams:params andHttpMethod:@"POST" andDelegate:self];

Теперь, когда я запускаю этот код, я получил следующий вывод.

Словарь результатов в - (void)request:(FBRequest *)request didLoad:(id)result

(
        {
        body = "{\"error\":0,\"error_description\":\"File file1 has not been attached\"}";
        code = 400;
        headers =         (
                        {
                name = "HTTP/1.1";
                value = "400 Bad Request";
            },
                        {
                name = "Content-Type";
                value = "text/javascript; charset=UTF-8";
            }
        );
    },
        {
        body = "{\"error\":0,\"error_description\":\"File file2 has not been attached\"}";
        code = 400;
        headers =         (
                        {
                name = "HTTP/1.1";
                value = "400 Bad Request";
            },
                        {
                name = "Content-Type";
                value = "text/javascript; charset=UTF-8";
            }
        );
    }
)

Я не знаю, как эти файлы прилагаются. Может ли кто-нибудь помочь мне разобраться в этой проблеме.

Есть ли какие-либо изменения в моем коде, тогда, пожалуйста, дайте мне знать.

Спасибо заранее...

4b9b3361

Ответ 1

Я рекомендую вам использовать новый интегрированный API Facebook в iOS 6, чтобы сделать это вместо Facebook API: https://developer.apple.com/videos/wwdc/2012/?id=306 там золотой видео WWDC для всех социальных задач. Плюс использование нового API в iOS 6 намного быстрее, чем использование Facebook.

Ответ 2

Вы неправильно добавляете двоичный код в словарь. Взгляните на способ загрузки файлов в приложение для примера Facebook. Вы должны иметь возможность легко использовать код примера Facebook для своего приложения.

/** 
 * Upload a photo.
 */
-(IBAction)uploadPhoto:(id)sender 
{
  NSString *path = @"http://www.facebook.com/images/devsite/iphone_connect_btn.jpg";
  NSURL *url = [NSURL URLWithString:path];
  NSData *data = [NSData dataWithContentsOfURL:url];
  UIImage *img  = [[UIImage alloc] initWithData:data];

  NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
                                 img, @"picture",
                                 nil];
  [_facebook requestWithMethodName:@"photos.upload"
                         andParams:params
                     andHttpMethod:@"POST"
                       andDelegate:self];
  [img release];
}

Ответ 3

Для вашего NSDictionary параметров используйте представление NSData вместо прямого использования объекта UIImage.

В зависимости от формата сжатия изображений, которые вы пытаетесь загрузить, вам нужно использовать другой метод для преобразования UIImage в NSData. Вот два метода: один для PNG и один для JPEG

//...cut...
[params setObject:UIImageJPEGRepresentation(self.jpegImage, 0.8) forKey:@"file1"];
[params setObject:UIImagePNGRepresentation(self.pngImage) forKey:@"file2"];
//...cut...

Это учебник из блога разработчиков Facebook, который показывает что-то подобное (хотя это и для видео, а не для пакетного API), и одно существенное отличие от вашего кода заключается в том, что переданный параметр представлен в представлении NSData, а не UIImage.

http://developers.facebook.com/blog/post/532/

Ответ 4

[params setObject: UIImagePNGRпредставление (self.image1) forKey: @ "file1" ];

Это не должны быть данные, это должен быть путь для этих изображений. Он будет работать нормально, если вы укажете путь вместо NSData.

Ответ 5

Я получил решение для загрузки нескольких файлов с помощью FBgraph.

вот мой код.

-(void) fbGraphCallback
{

FbGraphFile *graph_file = [[FbGraphFile alloc]initWithImage:imgView1.image];
FbGraphFile *graph_file1 = [[FbGraphFile alloc]initWithImage:imgView2.image];

NSString *jsonRequest1 = @"{ \"method\": \"POST\", \"relative_url\": \"me/photos\" , \"body\": \"First Image\", \"attached_files\": \"file1\" }";

NSString *jsonRequest2 = @"{ \"method\": \"POST\", \"relative_url\": \"me/photos\" , \"body\": \"Second Image\", \"attached_files\": \"file2\" }";

NSString *jsonRequestsArray = [NSString stringWithFormat:@"[ %@, %@ ]", jsonRequest1, jsonRequest2];

NSMutableDictionary *params = [NSMutableDictionary     dictionaryWithObjectsAndKeys:jsonRequestsArray,@"batch",nil];

[params setObject:graph_file forKey:@"file1"];
[params setObject:graph_file1 forKey:@"file2"];

[fbgraph doGraphPost:@"" withPostVars:params];

}

Спасибо mehul.