ios - 如何在适用于 iOS 的 Facebook SDK 中定义 "GeoPoint"属性

标签 ios facebook facebook-opengraph facebook-ios-sdk

我正在尝试通过创建一个继承自预定义“地点”对象的开放图谱对象来对开放图谱故事进行地理标记。但是,我不知道如何在 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;
    };

这是我的测试代码:

答:

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

最佳答案

我相信它们需要是嵌套字典,因此您需要创建一个“地点”图形对象,然后将其设置为您打开的图形对象上的地点。像这样的东西:

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;

关于ios - 如何在适用于 iOS 的 Facebook SDK 中定义 "GeoPoint"属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20376634/

相关文章:

node.js - 从 React 组件调用 passport js 函数的正确方法

LinkedIn 邮政检查员在 https URL 上遇到服务器错误

Facebook 页面 API : "Page Public Content Access" review screencast

ios - 如何为我的自定义 Open Graph 故事选择要发布的灵活句子结构?

objective-c - KVO - 如何检查对象是否是观察者?

ios - 在Swift中使用Audio Player更改UITableView中按钮单元格的播放暂停状态

ios - 使用自定义维度在初始化时布局单元格 subview

ios - UITableView insertRowsAtIndexPaths 删除单元格分隔符

Facebook API 私有(private)消息图像已过期 - 如何获取新图像? URL签名已过期

iphone - 新的 Facebook IOS SDK?我们可以将旧 sdk 与新 sdk 一起使用吗?