如何使用iOS SDK转到Facebook JSON响应的下一页?

Enr*_*tyo 8 facebook facebook-graph-api ios facebook-ios-sdk

在Facebook iOS SDK中,我可以要求这样的查询:

[_facebook requestWithGraphPath:@"me/feed" andDelegate:self];
Run Code Online (Sandbox Code Playgroud)

但是,例如,Facebook通常会使用URL来提供有限的JSON响应,以用于请求移至较早的日期.所以在JSON响应中,我将:

data =     ( /*things here... status updates, photos, etc...*/
    );
paging =     {
        next = "https://graph.facebook.com/me/feed?sdk=ios&sdk_version=2&access_token= <something>&until=2010-12-04";
        previous = "https://graph.facebook.com/me/feed?sdk=ios&sdk_version=2&access_token=<something>&since=<something>";
    };
Run Code Online (Sandbox Code Playgroud)

我想知道的是......我如何转到以前的URL?SDK是否提供了执行此操作的界面?

编辑:如果可能的话,我实际上想用G​​raph API回答,因为Facebook目前正在弃用REST API.

奖励:如果有人能解释Facebook返回的时间格式.我有2010-09-13T00%3A25%3A16%2B0000一个例子.

UIB*_*der 7

所有你需要的方法,将方法添加到Facebook子类或自身

- (void)requestWithURLString:(NSString *)fullURL
               andHttpMethod:(NSString *)httpMethod
                 andDelegate:(id <FBRequestDelegate>)delegate {
    [self openUrl:fullURL params:nil httpMethod:httpMethod delegate:delegate];
}
Run Code Online (Sandbox Code Playgroud)

ps第二个参数"httpMethod"可能总是@"GET"你可以省略它


Dou*_*ugW 6

使用Facebook的iOS SDK版本3,原始答案不再适用于当前版本.

我不得不做一些挖掘,因为新版本不会让这更容易.我找到了一个示例,说明如何在新SDK提供的FBGraphObjectPagingLoader类中完成此操作,以帮助对表执行此操作.它非常丑陋,但我认为它是"推荐"的方法,因为它是他们使用的.

这是我对其代码的轻微修改(最初在FBGraphObjectPagingLoader的followNextLink方法中找到)

FBRequest *request = [[[FBRequest alloc] initWithSession:FBSession.activeSession graphPath:nil] autorelease];
FBRequestConnection *connection = [[[FBRequestConnection alloc] init] autorelease];
[connection addRequest:request completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
     // Do some stuff
 }];

// Override the URL using the one passed back in 'next'.
NSURL *url = [NSURL URLWithString:urlString];
NSMutableURLRequest* urlRequest = [NSMutableURLRequest requestWithURL:url];
connection.urlRequest = urlRequest;

[connection start];
Run Code Online (Sandbox Code Playgroud)

你当然可以修改他们的库,如果你愿意,可以将它封装在类本身中.