使用 SLRequest 将多张图片上传到 Facebook
Posted
技术标签:
【中文标题】使用 SLRequest 将多张图片上传到 Facebook【英文标题】:upload multiple images to facebook using SLRequest 【发布时间】:2016-04-12 18:48:36 【问题描述】:我有两种方法可以将图片分享到 Facebook。
SDK 方式(完美运行):
FBSDKSharePhotoContent *content = [[FBSDKSharePhotoContent alloc] init];
NSMutableArray *uploadImages = [[NSMutableArray alloc] init];
for (UIImage *image in images)
FBSDKSharePhoto *sharePhoto = [[FBSDKSharePhoto alloc] init];
sharePhoto.caption = title;
sharePhoto.image = image;
[uploadImages addObject:sharePhoto];
content.photos = [NSArray arrayWithArray:uploadImages];
[FBSDKShareAPI shareWithContent:content delegate:self];
和SLRequest方式(只发送1张图片):
+ (void)uploadPhotoToFacebook:(NSMutableArray *)imagesData imageTitle:(NSString *)title account:(ACAccount*)account completionBlock:(shareSocialResponse)completion
SLRequest *facebookRequest = [SLRequest requestForServiceType:SLServiceTypeFacebook
requestMethod:SLRequestMethodPOST
URL:[NSURL URLWithString:@"https://graph.facebook.com/me/photos"]
parameters:@@"message": title];
for (NSData *imageData in imagesData)
[facebookRequest addMultipartData:imageData
withName:@"source"
type:@"multipart/form-data"
filename:@"photo!"];
NSLog(@"facebookRequest %@",facebookRequest);
facebookRequest.account = account;
[facebookRequest performRequestWithHandler:^(NSData *responseData, NSHTTPURLResponse *urlResponse, NSError *error)
if (error)
NSLog(@"%@",error.description);
else
NSDictionary *returnedData = [NSJSONSerialization JSONObjectWithData:responseData options:NSJSONReadingMutableContainers error:&error];
NSLog(@"returnedData: %@", [[NSString alloc] initWithData:responseData encoding:NSUTF8StringEncoding]);
if ([urlResponse statusCode] != 200)
dispatch_async(dispatch_get_main_queue(), ^
NSString *errorMessage = @"We could not process your request now";
if ([returnedData valueForKeyPath:@"error.message"] != nil)
errorMessage = [returnedData valueForKeyPath:@"error.message"];
completion(NO, errorMessage);
);
else
completion(YES, @"Your clip was posted!");
];
我相信如果在多部分中发送的每个数据都可以工作,但不是。
有人知道怎么做吗?谢谢。
【问题讨论】:
【参考方案1】:facebook 文档中有一些文章可能对您有所帮助。
https://developers.facebook.com/docs/graph-api/making-multiple-requests
因此,在您的情况下,您需要在请求中发送一个名为 batch
的字段,并且每个文件都必须附加一个唯一的名称,这样它就不会被另一个文件重写。
batch
字段的内容将是一个 json,您将在其中指定请求的端点,如下所示(缩小 btw):
[
"method": "POST",
"relative_url": "me/photos",
"body": "message=labrys",
"attached_files": "file1"
,
"method": "POST",
"relative_url": "me/photos",
"body": "message=circle",
"attached_files": "file2"
]
我用邮递员试过了,那个请求的设置应该是这样的:
很抱歉没有发布代码,我不精通目标 C,但我希望你能明白这一点。
【讨论】:
以上是关于使用 SLRequest 将多张图片上传到 Facebook的主要内容,如果未能解决你的问题,请参考以下文章
将多张图片上传到 Firebase 并检索到 viewpage