如何检查用户是否喜欢某个页面?

时间:2012-06-03 05:05:20

标签: iphone objective-c facebook

我想检查用户是否喜欢我的网页。在这里,我初始化了一个用户喜欢的列表的请求......

NSUserDefaults *defaults = [NSUserDefaults standardUserDefaults];

if ([defaults objectForKey:@"FBAccessTokenKey"] && [defaults objectForKey:@"FBExpirationDateKey"])
{
    [self.facebook setAccessToken:[defaults objectForKey:@"FBAccessTokenKey"]];
    [self.facebook setExpirationDate:[defaults objectForKey:@"FBExpirationDateKey"]];
}

if (![self.facebook isSessionValid])
{
    [self.facebook authorize:[[NSArray alloc] initWithObjects:@"publish_stream, user_likes", nil]];
}
else
{
[self.facebook requestWithGraphPath:@"me/likes" andParams:nil andHttpMethod:@"POST" andDelegate:self];    
}

代码执行requestWithGraphPath。然而,它永远不会工作,我得到“操作无法完成。(facebookErrDomain错误10000。)”。

1 个答案:

答案 0 :(得分:6)

你需要一个获取请求,而不是一个POST,所以我认为你的问题在这里:

[self.facebook requestWithGraphPath:@"me/likes" andParams:nil andHttpMethod:@"POST" andDelegate:self];

这需要:

[self.facebook requestWithGraphPath:@"me/likes" andParams:nil andHttpMethod:@"GET" andDelegate:self];

这将为您提供完整的喜欢列表。但是,如果你想找到一个类似的东西,看起来你必须做一个FQL查询:

https://api.facebook.com/method/fql.query?query=SELECT+user_id%2Cobject_id%2C+post_id+FROM+like+WHERE+user_id%3Dme%28%29%20and%20object_id=<OBJECT_ID_TO_CHECK>&access_token=<YOUR_ACCESS_TOKEN>

通过iOS SDK执行此操作,如下所述:https://stackoverflow.com/a/6372236 如果你得到任何回报,用户喜欢它。如果这有帮助,请告诉我。谢谢!

编辑:您实际上可以使用图表api执行单个查询。就像这样:

https://graph.facebook.com/me/likes/<OBJECT_ID>

所以只需将你的对象id放入请求:

[self.facebook requestWithGraphPath:@"me/likes/<OBJECT_ID>" andParams:nil andHttpMethod:@"GET" andDelegate:self];

你应该好。