如何在Facebook SDK for iOS中定义“GeoPoint”属性

我试图通过创build一个从预定义的“place”对象inheritance的Open Graph对象来为Open Graph故事地理标记。 但是,我无法弄清楚如何在iOS中定义GeoPoint属性“place:location”! 这里有一个类似的问题的答案: https : //stackoverflow.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; }; 

这是我的testing代码:

A:

 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]; 

我试图用我能想到的所有东西来replace线object[@"location"] = … ,比如:

B:

 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的错误消息都是相同的。

我相信他们需要嵌套字典,所以你需要创build一个“地点”graphics对象,然后将其设置为打开graphics对象的位置。 就像是:

 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; 

这对我工作:

 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]); } }]; 

尝试这个:

 object[@"data"][@"location"] = @{@"latitude": @"48.85831", @"longitude": @"2.29465"}; 

Facebook的文档没有明确提到,我们应该把关键data的附加属性。