我正在尝试使用 Facebook iOS SDK 3.5 来发布 Open Graph 操作。我的行动是:take
a photo
, and photo
有一个额外的要求string
属性名为filter
.
我正在创建我的图形对象(所有值都是有效且有效的):
NSMutableDictionary<FBOpenGraphObject> *object =
[FBGraphObject openGraphObjectForPostWithType:@"tonerapp:photo"
title:@"photo"
image:imageData
url:nil
description:title];
然后我添加我的过滤器:
object[@"tonerapp:filter"] = filterName;
我尝试发布该对象,并且可以确认我的过滤器属性存在(启用 URL 请求的 FSBSetting 日志记录行为以显示请求数据):
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;
//应用程序名称而不是命名空间名称
object[@"filter"] = filterName;
//根本没有命名空间名称
[object setObject:filterName forKey:@"tonerapp:filter"];
//设置对象符号
[object setValue:filterName forKey:@"tonerapp:filter"];
//设置值表示法
[object setObject:filterName forKey:@"filter"];
//setobject 且不带命名空间...
甚至可能更多。我已经尝试了所有方法,但 API 总是失败并出现相同的错误。如果我转到 Facebook 中的应用程序并设置,我可以验证对象的其余部分是否正确filter
as optional
代替required
,就发布成功了。这是 Graph API 的错误/文档不足,还是我太盲目以至于看不到这里明显的东西?
谢谢,
能。