我正在使用Facebook v4.0.1集成到我的应用程序中.我使用FBSDKGraphRequest来获取好友列表
FBSDKGraphRequest *friendsRequest = [[FBSDKGraphRequest alloc] initWithGraphPath:@"me/friends" parameters:nil];
FBSDKGraphRequestConnection *connection = [[[FBSDKGraphRequestConnection alloc] init] autorelease];
[connection addRequest:friendsRequest
completionHandler:^(FBSDKGraphRequestConnection *innerConnection, NSDictionary *result, NSError *error) {
}];
// start the actual request
[connection start];
Run Code Online (Sandbox Code Playgroud)
它只返回大约25个朋友和一个名为分页的参数,以获得下一个朋友.
我如何使用分页来获取下一个或者有另一种方式让所有朋友一次
LEO*_*LEO 15
接受的答案让我朝着正确的方向前进,但并非100%正确.
对于使用图形v2.3的FacebookSDK 4.x,您现在只能获得25个结果,除非您达到限制.您可以选择的最大限制是1k.这是一个获得100的例子:
NSMutableString *facebookRequest = [NSMutableString new];
[facebookRequest appendString:@"/me/friends"];
[facebookRequest appendString:@"?limit=100"];
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:facebookRequest
parameters:nil
HTTPMethod:@"GET"];
[request startWithCompletionHandler:<YOUR BLOCK HERE>];
Run Code Online (Sandbox Code Playgroud)
注意 - YOUR_BLOCK_HERE是您将用于处理结果的块.
现在出现了分页的问题.粘贴在接受的答案中的JSON代码不正确.以下是/我/朋友的JSON:
data = (
{
id = 1234567890123456711;
name = “John Snow";
},
{
id = 1234567891234567891;
name = “Ned Stark";
}
);
paging = {
next = "https://graph.facebook.com/v2.3/<FB_USER_ID>/friends?limit=100&format=json&access_token=<SESSION_TOKEN>&offset=100&__after_id=enc_asdfasas2393nfaASDVASEqwe";
};
summary = {
"total_count" = 175;
};
Run Code Online (Sandbox Code Playgroud)
我们从Facebook的JSON结果中知道,我们需要继续分页,原因如下:1)我们在数据部分中有Graph结果2.)我们得到了下一个url.
注 - SESSION_TOKEN是发出请求的当前会话令牌.
注 - FB_USER_ID是发出请求的用户的Facebook ID.
现在,这就是您执行"下一页"请求的方式.如果要使用FBSDKGraphRequest,则必须删除Facebook URL.
NSString *nextUrl = [pagingDictionary objectForKey:@"next"];
//remove the 'https://graph.facebook.com/v2.3/'
nextUrl = [nextUrl substringFromIndex:32];
FBSDKGraphRequest *request = [[FBSDKGraphRequest alloc]
initWithGraphPath:nextUrl
parameters:nil
];
[request startWithCompletionHandler:<YOUR_BLOCK_HERE>];
Run Code Online (Sandbox Code Playgroud)
编写代码,以便使用递归块调用或递归方法调用来调用facebook分页.我明显简化了我的帖子,专注于问题.通过这种方式,您可以编写一次块解析代码,并将其重用于不同类型的分页请求,例如"我/朋友"或"我/ invitable_friends".
| 归档时间: |
|
| 查看次数: |
6810 次 |
| 最近记录: |