如何在 iOS 版 Facebook SDK 中定义“GeoPoint”属性
Posted
技术标签:
【中文标题】如何在 iOS 版 Facebook SDK 中定义“GeoPoint”属性【英文标题】:How to define a "GeoPoint" property in Facebook SDK for iOS 【发布时间】:2013-12-04 13:26:24 【问题描述】:我正在尝试通过创建一个继承自预定义“地点”对象的开放图对象来对开放图谱故事进行地理标记。但是,我不知道如何在 ios 中定义 GeoPoint 属性“place:location”!这里有一个类似问题的答案:https://***.com/a/19386730/824515,我尝试过但没有成功。
现在,我试图通过直接设置“地点”对象来解决问题,但这并没有帮助。我收到此错误消息:
error =
code = 100;
message = "(#100) Object Missing a Required Value: Object at URL '' of type 'place' is invalid because a required property 'place:location' of type 'geo_point' was not provided.";
type = OAuthException;
;
这是我的测试代码:
答:
FBRequestConnection *connection = [[[FBRequestConnection alloc] init] autorelease];
id<FBOpenGraphObject> object = [FBGraphObject openGraphObjectForPost];
object[@"type"] = @"place";
object[@"title"] = @"Test Title";
object[@"location"] = @@"latitude": @"48.85831", @"longitude": @"2.29465";
NSLog(@"object = %@", [object description]);
FBRequest *objectRequest = [FBRequest requestForPostOpenGraphObject: object];
[connection addRequest: objectRequest
completionHandler: ^(FBRequestConnection *connection, id result, NSError *error)
DLine();
if (error)
NSLog(@"Error: %@", error);
else
NSLog(@"Result: %@", [result description]);
];
[connection start];
我已尝试将object[@"location"] = …
行替换为我能想到的所有内容,例如:
乙:
object[@"place:location"] = @@"latitude": @"48.85831", @"longitude": @"2.29465";
C:
object[@"place"] = @@"location":
@@"latitude": @"48.85831", @"longitude": @"2.29465"
;
D:
object[@"location:latitude"] = @"48.85831";
object[@"location:longitude"] = @"2.29465";
E:
object[@"place:location:latitude"] = @"48.85831";
object[@"place:location:longitude"] = @"2.29465";
所有版本 A - E 的错误消息都是相同的。
【问题讨论】:
你试过[object setObject:@@"latitude":@"48.85831", @"longitude": @"2.29465" forKey:@"location"];
吗?
@Virussmca:哈,你在我打字的时候编辑了 ;-) 无论如何,我已经尝试过了。它完全等同于我的版本“A”。
您好,从 2015 年开始!我现在也有同样的问题,你当时发现了吗?请拯救我的一天。
抱歉 vlad24,我当时无法解决这个问题,所以我放弃了它,从那以后没有检查任何更新。
【参考方案1】:
我相信它们需要嵌套字典,因此您需要创建一个“位置”图形对象,然后将其设置为打开图形对象上的位置。比如:
id<FBGraphObject> place = [FBGraphObject graphObject];
id<FBGraphObject> location = [FBGraphObject graphObject];
location[@"latitude"] = @"48.85831";
location[@"longitude"] = @"2.29465";
place[@"location"] = location;
place[@"name"] = @"foobar";
object[@"place"] = place;
【讨论】:
感谢您的回答,但不幸的是它不起作用。生成的字典与问题中的版本“C”几乎相同(使用 NSLog 语句验证),唯一的区别是您为“地点”字典分配了一个“名称”。 与其创建“地点”对象,不如直接向您的自定义打开图形对象添加 GeoPoint 属性?【参考方案2】:这对我有用:
NSMutableDictionary<FBOpenGraphObject> *store = [FBGraphObject openGraphObjectForPost];
store.provisionedForPost = YES;
store[@"og"] = @ @"title":@"Test Title", @"type":@"place" ;
store[@"place"] = @ @"location" : @ @"longitude": @"-58.381667", @"latitude":@"-34.603333" ;
[FBRequestConnection startForPostWithGraphpath:@"me/objects/place"
graphObject:@@"object":store
completionHandler:^(FBRequestConnection *connection,
id result,
NSError *error)
if (!error)
NSLog(@"result: %@", result);
else
NSLog(@"%@", [NSString stringWithFormat:@"%@", error.description]);
];
【讨论】:
嘿,伙计,您的回答似乎很有趣.. 但是您能提供一些解释吗?【参考方案3】:试试这个:
object[@"data"][@"location"] = @@"latitude": @"48.85831", @"longitude": @"2.29465";
Facebook 文档没有明确提到我们应该将附加属性放在键 data
下。
【讨论】:
以上是关于如何在 iOS 版 Facebook SDK 中定义“GeoPoint”属性的主要内容,如果未能解决你的问题,请参考以下文章
我是 iOS 版 Facebook SDK 的新手。我想向 Facebook 上的朋友发送邀请
使用 iOS 版 Facebook SDK 发布故事时未上传图片