Can*_*ğlu 4 facebook opengraph facebook-graph-api ios facebook-opengraph
我正在为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);
}
}];
Run Code Online (Sandbox Code Playgroud)
发布对象后,我在完成处理程序中发布"take"操作,如上所示.以下是使用"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);
}
}];
}
Run Code Online (Sandbox Code Playgroud)
结果如下:

首先创建"发布"动作,然后将"拍摄"动作应用于照片.我需要摆脱"后期"行动.更奇怪的是,My Open Graph仪表板看起来像这样:

我删除了"对象"类型和"发布"操作,但每隔一次,它们就会再次添加到我的操作中.我怀疑我做错的事情会导致"默认的帖子创建操作"问题,并且默认对被添加到我的仪表板中.我转到我的应用程序设置并更改我的照片类型的订阅(创建)操作:

然后我再次尝试发布我的照片.即使我的创建操作是"take",也会创建一个"post"操作:

但这次我无法创造任何"采取"行动.它响应失败:
body = {
error = {
code = 1611231;
message = "A post action for this object already exists.";
type = Exception;
};
};
code = 500;
Run Code Online (Sandbox Code Playgroud)
这不应该恰恰相反吗?如果我没有将默认创建操作设置为自定义操作,我不应该搞砸了吗?我还尝试"在运行中"创建照片对象(不先"发布"它并直接在"take"动作中发送对象JSON数据,这似乎是这样做的自然方式),但它也像在这个例子中一样失败:示例Facebook对象代码..我错过了什么,或者Open Graph API是否存在严重问题?
谢谢,
能够.
更新:我已启用2013年7月迁移.
如果您通过Object API创建一个(用户拥有的)打开图形对象(这是您使用startForPostOpenGraphObject,也通过共享对话框),那么将会创建一个"Post"操作.唯一的方法是托管您自己的开放图形对象.
可以这样想,你真正在做的事实上是两个独立的操作.
它们中的每一个都将在活动日志中生成单独的活动.这种分离很重要,因为您可以在不同的操作中重用相同的对象,并且它必须显示在用户的活动日志中,因为它是用户拥有的对象.
另见https://developers.facebook.com/docs/opengraph/using-object-api/
| 归档时间: |
|
| 查看次数: |
1604 次 |
| 最近记录: |