我正在尝试使用Facebook iOS SDK 3.0通过facebook open-graph-api实现。 除了FbGraphObject之外,一切似乎都有效,因为我不知道它应该是什么样子,因为这显然不起作用。
我想要做的是将网址作为对象发布。一个简单的喜欢通过开放图。
我收到以下代码的错误消息是:
The action you're trying to publish is invalid because it does not specify any
reference objects. At least one of the following properties must be specified: object.
我使用的代码是:
FBGraphObject *objectToLike = [[FBGraphObject alloc]initWithContentsOfURL:[NSURL URLWithString:facebookLike.titleLabel.text]];
FBRequest *requestLike = [[FBRequest alloc]initForPostWithSession:[FBSession activeSession] graphPath:@"me/og.likes" graphObject:objectToLike];
FBRequestConnection *connection = [[FBRequestConnection alloc] init];
[connection addRequest:requestLike
completionHandler:
^(FBRequestConnection *connection, id result, NSError *error) {
if (!error &&
result) {
DLog(@"NothingWentWrong");
}
DLog(@"MajorError: %@", error);
}
];
[connection start];
更新:
检查了一些更多的信息,我猜它使用这个方法: https://developers.facebook.com/docs/sdk-reference/iossdk/3.0/class/FBGraphObject/#//api/name/graphObject
以某种方式创建一个对象。这是我可能需要做的事情的graphObject方法。任何帮助都将不胜感激。
答案 0 :(得分:6)
我实际上已经设法创建一个简单而非常脏的解决方案。 该解决方案似乎不是最佳解决方案,但它目前是一种可行的解决方案。
如果有人在Facebook上使用了此网址上的资源管理器工具: https://developers.facebook.com/tools/explorer/
你知道当Facebook分享喜欢时,网址会是什么样子。它必须具有URL和访问令牌。 因此,我的解决方案只是忽略从Facebook SDK发送任何内容,只是将发布请求发送到我在资源管理器工具中使用的相同URL。
如果你仔细观察,似乎在facebooks文档上有一些引用它,但没有人确切地解释如何实际建立连接,所以这是我的解决方案:
NSString *urlToLikeFor = facebookLike.titleLabel.text;
NSString *theWholeUrl = [NSString stringWithFormat:@"https://graph.facebook.com/me/og.likes?object=%@&access_token=%@", urlToLikeFor, FBSession.activeSession.accessToken];
NSLog(@"TheWholeUrl: %@", theWholeUrl);
NSURL *facebookUrl = [NSURL URLWithString:theWholeUrl];
NSMutableURLRequest *req = [NSMutableURLRequest requestWithURL:facebookUrl];
[req setHTTPMethod:@"POST"];
NSURLResponse *response;
NSError *err;
NSData *responseData = [NSURLConnection sendSynchronousRequest:req returningResponse:&response error:&err];
NSString *content = [NSString stringWithUTF8String:[responseData bytes]];
NSLog(@"responseData: %@", content);
如果你查看代码,我只需要获取url并在url中放入两个动态字符串,一个包含object-url,另一个包含访问令牌。我创建了一个URLRequest并使其成为一个POST请求,并且来自facebook的响应被记录下来,所以实际上可以看到是否通过了。
可能会有一些性能改进可以通过实际请求完成,但如果您发现任何减速,我会留给您。
我仍然对其他解决方案感兴趣,但这是我现在要使用的解决方案。
答案 1 :(得分:2)
我们目前不支持使用我们的Graph API。 您可以看到的是这样的事情: https://developers.facebook.com/docs/opengraph/actions/builtin/likes/
答案 2 :(得分:0)
我不确定initWithContentsOfURL
是做什么的,但从名称我想它会尝试从给定的URL(?)中实际加载内容。
您只需将URL作为文本参数提供 - URL 是代表Open Graph对象的内容。 Facebook将完成剩下的工作,抓取该URL后面的页面并阅读它的OG元标记等。
答案 3 :(得分:0)
也许只是这个?
FBRequest *requestLike = [[FBRequest alloc]initForPostWithSession:[FBSession activeSession]
graphPath:@"me/og.likes"
graphObject:[NSURL URLWithString:facebookLike.titleLabel.text]];