17

我正在尝试向用户的提要发布类似这样的内容(它最初只显示一张图片,但是当您单击“显示更多”时,您会看到所有五张图片)

发布 5 张图片

我的代码如下所示:

NSMutableArray *properties = [[NSMutableArray alloc] initWithCapacity:5];
NSMutableArray *media = [[NSMutableArray alloc] initWithCapacity:5];
for (MyObject *object in self.myObjects) {
    [properties addObject:[NSDictionary dictionaryWithObjectsAndKeys:object.name,@"text",
                                                                     object.link,@"href", nil]];
    NSString *imageUrlString = object.url.absoluteString;
    [media addObject:[NSDictionary dictionaryWithObjectsAndKeys:@"image",@"type",
                                                                imageUrlString,@"src",
                                                                object.link,@"href", nil]];
}
NSData *propertyData = [NSJSONSerialization dataWithJSONObject:properties
                                                       options:NSJSONWritingPrettyPrinted
                                                         error:nil];
NSString *propertiesString = [[NSString alloc] initWithData:propertyData
                                                   encoding:NSUTF8StringEncoding];
NSData *mediaData = [NSJSONSerialization dataWithJSONObject:media
                                                    options:NSJSONWritingPrettyPrinted
                                                      error:nil];
NSString *mediaString = [[NSString alloc] initWithData:mediaData
                                              encoding:NSUTF8StringEncoding];
NSDictionary *params = [NSDictionary dictionaryWithObjectsAndKeys:myAppID, @"app_id",
                                                                  link, @"link",
                                                                  name, @"name",
                                                                  caption, @"caption",
                                                                  propertiesString, @"properties",
                                                                  mediaString, @"media",
                                                                  description, @"description", nil];
[FBRequestConnection startWithGraphPath:@"me/feed"
                             parameters:params
                             HTTPMethod:@"POST"
                      completionHandler:completionHandler];

这只会发布一张图片,但我需要发布所有 5 张图片。

编辑:我们已经通过 janrain 参与库在一篇帖子中发布了 5 张图片,所以这是可行的!

4

5 回答 5

1

您将需要直接使用 Facebook Connect API:iOS SDK 不公开此类功能。

您应该查看Graph Photo API的 Publishing 部分,该部分建议使用此 URL 上传图像(不要忘记要求提供 publish_stream 凭据):

POST https://graph.facebook.com/USER_ID/photos

message=[optional description]
source=[the image's data]
place=[optional image's location]

如果您有一个名为 facebook 的 Facebook 实例和一个名为 image 的 UIImage 实例,那么使用 iOS Facebook Connect SDK 会给我们这个调用:

[facebook requestWithMethodName:@"/USER_ID/photos"
                      andParams:[NSDictionary dictionaryWithObjectsAndKeys:
                                 UIImageJPEGRepresentation(image, 0.7), @"source",
                                 @"My puppy is so cute!!!", @"message",
                                 nil]
                  andHttpMethod:@"POST"
                    andDelegate:self];
于 2013-07-30T18:59:15.593 回答
0

我认为批处理请求是您正在寻找的。

从这个链接

如果您的应用程序需要一次访问大量数据的能力——或者您需要一次更改多个对象,那么批处理查询通常比发出多个单独的 HTTP 请求更有效。

为了实现这一点,Graph API 支持批处理。批处理允许您在单个 HTTP 请求中传递多个操作的指令。您还可以指定相关操作之间的依赖关系(在下面的部分中描述)。Facebook 将并行处理您的每个独立操作,并将按顺序处理您的相关操作。完成所有操作后,将向您传回一个合并的响应,并关闭 HTTP 连接。

...

上传二进制数据

可以将二进制数据指定为批处理 API 请求的 multipart/mime 部分的一部分。批处理图 API 允许上传多个二进制项作为批处理调用的一部分。为此,您需要将所有二进制项作为多部分/mime 附件添加到您的请求中,并且需要每个操作使用操作中的“attached_files”属性来引用其二进制项。“attached_files”属性可以在其值中采用逗号分隔的附件名称列表。

这是使用 iOS sdk 创建批处理请求的教程的链接。

于 2012-09-27T05:54:11.647 回答
0

好的新想法;您如何将所有五个循环发送,但您保持状态文本和其他所有内容相同。facebook不可能将它们组合成1个帖子吗?

于 2012-09-20T08:38:47.013 回答
0

您可以在 Open Graph 操作中上传多个图像,如下所述:https ://developers.facebook.com/docs/opengraph/usergeneratedphotos/

来自那里的示例代码:

https://graph.facebook.com/me/nyccookbook:cook?
  recipe=http://www.yourdomain.com/pizza.html&
  image[0][url]=http://www.yourdomain.com/images/my_camera_pizza_pic.jpg&
  image[0][user_generated]=true&
  image[1][url]=http://www.yourdomain.com/images/my_camera_soda_pic_2.jpg&
  image[1][user_generated]=true&
  access_token=YOUR_ACCESS_TOKEN
于 2012-09-27T01:21:38.633 回答
0

Facebook 不久前在一篇帖子中删除了多张图片。当你能够做到这一点时,人们正在制作由多张并排的图片组成的“横幅”。现在,任何墙贴都只显示 1 张图片。

您可以发布更多图片,但默认情况下他们不会确定。Facebook 将添加一个“更多”链接,尽管他们也可能已经取消了该链接。

来源:如何发布带有 2 张图片的墙贴

因此,您将无法用多个图像喂罐。 更好的方法是将 5 张图像组合在一张图像中。

于 2012-09-25T13:33:05.407 回答