25

次のリンクを参照して次のコードを実行し、Facebook に複数の写真をアップロードするためのバッチ リクエストを作成しました。

このFacebook グラフ APIを使用して、Facebook に複数の写真をアップロードするためのソリューションを手に入れました。

コード:

    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";
            }
        );
    }
)

このファイルがどのように添付されているのかわかりません..誰かがこの問題を解決するのを手伝ってくれますか.

私のコードに変更はありますか?それから私に知らせてください。

前もって感謝します...

4

5 に答える 5

1

これを行うには、FacebookのAPIの代わりにiOS6の新しい統合FacebookAPIを使用することをお勧めします。https ://developer.apple.com/videos/wwdc/2012/?id= 306すべてのソーシャルタスク用のゴールデンWWDCビデオがあります。さらに、iOS 6で新しいAPIを使用すると、Facebookを使用するよりもはるかに高速になります。

于 2012-10-21T06:04:13.680 に答える
0

[params setObject:UIImagePNGRepresentation(self.image1) forKey:@"file1"];

これはデータではなく、その画像のパスである必要があります。NSData の代わりにパスを指定すると、正常に機能します。

于 2012-10-31T12:18:25.260 に答える
0

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];

}

ありがとうメフル。

于 2013-06-10T12:28:17.370 に答える
0

パラメータの NSDictionary には、UIImage オブジェクトを直接使用する代わりに、NSData 表現を使用します。

アップロードしようとしている画像の圧縮形式に応じて、別の方法を使用して UIImage を NSData に変換する必要があります。PNG 用と JPEG 用の 2 つの手法を次に示します。

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

これは Facebook 開発者ブログのチュートリアルであり、似たようなものを示しています (ただし、これはビデオ用であり、バッチ API ではありません)。コードとの大きな違いの 1 つは、渡されるパラメーターが UIImage ではなく NSData 表現であることです。

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

于 2012-05-28T21:03:57.090 に答える
-1

バイナリをディクショナリに正しく追加していません。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];
}
于 2012-05-08T07:47:35.077 に答える