我使用Facebook SDK 3.10.0 for iOS。当我试图获取用户新闻源时,我遇到了一个问题: 在facebook上请求:
[FBRequest requestForGraphPath:@"me/home"]
我得到了我需要的所有数据和有关分页的信息的响应:
data = (
"A LOT OF USER DATA"
);
paging = {
next = "https://graph.facebook.com/{MY_USER_ID}/home?format=json&access_token={ACCESS_TOKEN}&limit=25&until=1385113385";
previous = "https://graph.facebook.com/{MY_USER_ID}/home?format=json&access_token={ACCESS_TOKEN}&limit=25&since=1385206398&__previous=1";
};
但是当我尝试使用下一个链接和 AFHTTPRequestOperation 获取信息时:
AFHTTPRequestOperation *newDataOperation = [[AFHTTPRequestOperation alloc] initWithRequest:request];
newDataOperation.responseSerializer = [AFJSONResponseSerializer serializer];
[newDataOperation setCompletionBlockWithSuccess:^(AFHTTPRequestOperation *operation, id responseObject) {
NSLog(@"%@", responseObject);
} failure:^(AFHTTPRequestOperation *operation, NSError *error) {
NSLog(@"Next page retrieving error = %@", error);
}];
我得到空的json
data = (
);
我使用Facebook Access令牌调试器和结果:
并且我使用Graph Api Explorer获得的奇怪的访问令牌与我在我的应用程序中得到的不同。我从Graph Api Explorer获得的令牌工作得非常好但是当我从应用程序结果中设置令牌时: me / home 正在工作 但下一个链接返回空:
答案 0 :(得分:1)
And there is strange thing access token which i get using Graph Api Explorer
differs from which i get in my app.
实际上并不奇怪。访问令牌将根据您从资源管理器右上角选择的应用程序类型而改变。
Facebook API Pagination doesn't work
我在Graph API中看到了很多关于分页问题的问题,奇怪的是问题还没有解决!您可以尝试使用Offset based pagination。例如,在网址中设置limit=100&offset=0
。我知道这在新闻提要的情况下没有意义,但是在大量数据的情况下它通常可以正常工作。
答案 1 :(得分:0)
对于facebook的分页,我建议使用Apple本地类作为
如果nextPageURL不是nil,则使用nextPageURL变量从JSON响应中缓存下一个url,并在下一个api请求中分配给url字符串并使用以下代码:
if (self.nextPageURL) {
// urlString is the first time formulated url string
urlString = self.nextPageURL;
}
NSMutableURLRequest *request = [[NSMutableURLRequest alloc] initWithURL:[NSURL URLWithString:urlString]];
[NSURLConnection sendAsynchronousRequest:request queue:networkQueue completionHandler:^(NSURLResponse *response, NSData *data, NSError *error) {
if (error) {
DDLogVerbose(@"FACEBOOK:Connection error occured: %@",error.description);
}else{
isRequestProcessing = NO;
NSDictionary *resultData = [NSJSONSerialization JSONObjectWithData:data options:NSJSONReadingMutableLeaves error:nil];
DDLogVerbose(@"parsed data is %@",resultData);
self.nextPageURL = resultData[@"paging"][@"next"];
// do your customisation of resultData here.
}
}];