Facebook不接受自定义Open Graph属性

时间:2013-06-30 22:33:33

标签: ios facebook-graph-api opengraph facebook-opengraph facebook-ios-sdk

我正在尝试使用Facebook iOS SDK 3.5发布Open Graph操作。我的行动是: take photophoto还有一个名为string的必需filter属性。

我正在创建我的图形对象(所有值都有效且有效):

NSMutableDictionary<FBOpenGraphObject> *object =
[FBGraphObject openGraphObjectForPostWithType:@"tonerapp:photo"
                                                title:@"photo"
                                                image:imageData
                                                  url:nil
                                          description:title];

然后我添加了我的过滤器:

object[@"tonerapp:filter"] = filterName;

我尝试发布该对象,并且我可以确认我的过滤器属性是否存在(为URL请求启用FBSetting日志记录行为以显示请求数据):

Body (w/o attachments): 
object: {"description":"","type":"tonerapp:photo",
"tonerapp:filter":"classic","data":{},
"fbsdk:create_object":true,
"image":{"url":"fbstaging:\/\/graph.facebook.com\/staging_resources\/MDExMDE1MjkzNzU1Njc3MDE0MjoxNTM4NzgwNjUy","user_generated":"true"},
"title":"photo"}

我可以在那里看到我的过滤器属性,但响应如下:

error =    {
        code = 100;
        message = "(#100) Object Missing a Required Value: 
Object at URL '' of type 'tonerapp:photo' is invalid because 
a required property 'tonerapp:filter' of type 'string' was not provided.";
        type = OAuthException;
    };

嗯,就在那里。我尝试了所有可能的组合,例如:

object[@"data"] = @{@"tonerapp:filter": filterName}; //包装到数据对象

object[@"data"] = @{@"filter": filterName}; //包装数据并删除命名空间

object[@"toner:filter"] = filterName; // app name而不是命名空间名称

object[@"filter"] = filterName; //根本没有命名空间名称

[object setObject:filterName forKey:@"tonerapp:filter"]; // setobject notation

[object setValue:filterName forKey:@"tonerapp:filter"]; // setvalue notation

[object setObject:filterName forKey:@"filter"]; // setobject AND没有命名空间...

甚至更多。我已经尝试了所有的东西,但API始终失败并出现相同的错误。我可以验证对象的其余部分是否正确,如果我在Facebook中访问我的应用并将filter设置为optional而不是required,则会成功发布。使用Graph API是一个错误/不充分的文档,还是我是如此盲目以至于我看不到明显的东西?

谢谢, 可以。

2 个答案:

答案 0 :(得分:4)

将它们放在&#34;数据&#34;

之下
object[@"data"][@"youcustomproperty"] = @"smth";

答案 1 :(得分:0)

确保您的filterName是URL编码的。我对电影名称也有同样的问题,这也是图表上的自定义操作。尝试仅发布一个简单字符串的手动值,并告诉我们。