我正在为 iOS 创建一个照片应用程序。我有一个自定义动作类型对,在我的应用程序中定义了“拍照”。我首先创建“照片”对象(我有一个用户生成的图像,我首先上传照片并获取暂存 URI。此代码在此之后):
NSMutableDictionary *imageData = [NSMutableDictionary dictionaryWithDictionary:
@{
@"url" : stagingURL,
@"user_generated" : @"true",
}];
NSMutableDictionary<FBOpenGraphObject> *object =
[FBGraphObject openGraphObjectForPostWithType:@"tonerapp:photo"
title:@"photo"
image:imageData
url:@"http://tonerapp.info"
description:title];
//post the object to facebook
[FBRequestConnection startForPostOpenGraphObject:object completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
if(result != nil){
NSString* resultID = [result objectForKey:@"id"];
NSMutableDictionary<FBGraphObject> *actionDict = [FBGraphObject graphObject];
actionDict[@"photo"] = resultID;
[self postTakeActionToFacebookWithOpenGraphObject:actionDict completion:action];
}else{
action(NO);
}
}];
发布对象后,我在完成处理程序中发布“采取”操作,如上所示。以下是使用“photo”对象发布“take”操作的代码:
-(void)postTakeActionToFacebookWithOpenGraphObject:(NSMutableDictionary<FBGraphObject>*)ogObject completion:(booleanAction)action{
if(self.selectedPlace != nil){
ogObject[@"place"] = [self.selectedPlace id];
}
if(self.taggedFriends != nil && self.taggedFriends.count > 0){
ogObject[@"tags"] = self.taggedFriends;
}
[FBRequestConnection startForPostWithGraphPath:@"me/tonerapp:take"
graphObject:ogObject
completionHandler:^(FBRequestConnection *connection,
id result,
NSError *error) {
if(result != nil){
NSLog(@"oldu");
action(YES);
}else{
action(NO);
}
}];
}
结果如下:
首先创建“发布”动作,然后将“拍摄”动作应用于照片。我需要摆脱“发布”动作。更奇怪的是,我的 Open Graph 仪表板看起来像这样:
我删除了“对象”类型和“发布”动作,但每隔一次,它们就会再次添加到我的动作中。我怀疑我做错的事情会导致“默认帖子创建操作”问题和默认对被添加到我的仪表板。我转到我的应用程序的设置并更改我的照片类型的订阅(创建)操作:
然后我尝试再次发布我的照片。即使我的创建操作是“采取”,也会创建一个“发布”操作:
但这次我无法创建任何“采取”行动。它因以下响应而失败:
body = {
error = {
code = 1611231;
message = "A post action for this object already exists.";
type = Exception;
};
};
code = 500;
这不应该正好相反吗?如果我不将默认创建操作设置为自定义操作,我不应该把它搞砸吗?我还尝试过“即时”创建照片对象(没有先“发布”它并直接在“拍摄”操作中发送对象 JSON 数据,这似乎是这样做的自然方式),但它也会失败,就像在这个例子中一样:Example Facebook object code。. 我是否遗漏了什么,或者 Open Graph API 是否存在严重问题?
谢谢,
能。
更新:我启用了 2013 年 7 月的迁移。