请在下面找到我的代码,在朋友的墙上分享
AppDelegate *appDelegate = [[UIApplication sharedApplication]delegate];
// if we don't have permission to announce, let's first address that
if ([appDelegate.session.permissions indexOfObject:@"publish_actions"] == NSNotFound)
{
NSArray *permissions =[NSArray arrayWithObjects:@"publish_actions",@"publish_stream",@"manage_friendlists", nil];
[FBSession setActiveSession:appDelegate.session];
[[FBSession activeSession] requestNewPublishPermissions:permissions defaultAudience:FBSessionDefaultAudienceFriends
completionHandler:^(FBSession *session, NSError *error)
{
if (!error)
{
// have the permission
[self poster];
}
else
{
UIAlertView *alertView = [[UIAlertView alloc] initWithTitle:@"Error" message:error.localizedDescription delegate:nil cancelButtonTitle:@"OK" otherButtonTitles:nil];
[alertView show];
}
}];
}
else
{
NSMutableDictionary *params = [NSMutableDictionary dictionaryWithObjectsAndKeys:
_friendId, @"to",
@"text change", @"caption",
@"Some Text", @"description",
@"http://example.com/pic.png", @"picture",
nil];
[FBWebDialogs presentFeedDialogModallyWithSession:nil
parameters:params
handler:
^(FBWebDialogResult result, NSURL *resultURL, NSError *error)
{
//stuff
}];
}
这很好用,但是当我尝试放置本地图片而不是图片网址时,应用程序崩溃了
[UIImage imageNamed:@"troll.png"], @"picture"
答案 0 :(得分:1)
如果您阅读documentation -
picture :此帖子附带的图片的网址。图片必须至少为200px×200px。
因此,您无法将图片数据传递给Feed,只有指向该图片的链接才有效。
要解决此问题,您只需要2个选项 -
将图像保存到服务器,并生成链接并将此链接传递给picture
参数。
使用 - 这不会检查“编辑-2”\POST /photos
在Facebook上传图片,然后在picture
参数中使用其链接。
编辑1: 获取图片链接 -
[FBRequestConnection startWithGraphPath:@"/{photo-id}?fields=picture"
parameters:nil
HTTPMethod:@"GET"
completionHandler:^(
FBRequestConnection *connection,
id result,
NSError *error
) {
/* handle the result */
}];
(这可以忽略,因为facebook cdn图像无法在picture
参数中使用。请选中“Edit-2”)
编辑2:
根据facebook的人 -
供稿对话框不支持
object_attachment
。- 醇>
picture
是修改帖子图片的正确方法。但是,您可以不为此参数指定Facebook CDN 中的图片。
所以我猜你只剩下一个选项 - 在facebook以外的其他服务器上上传phorto,并在picture
参数中使用该网址。