3

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

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。)”。

4

1 回答 1

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];

你应该很好。

于 2012-10-21T15:31:40.973 回答