【发布时间】:2014-08-06 10:22:09
【问题描述】:
-(void)getFBGroupsWithsuccess:(SMSuccessResponseBlock) success
failure:(SMFailureBlock) failure{
__block NSMutableArray *groupsDataArray=[[NSMutableArray alloc]init];
[FBRequestConnection startWithGraphPath:@"me/groups?fields=picture,name"
completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
if (!error) {
// Sucess! Include your code to handle the results here
NSLog(@"user events: %@", result);
NSArray *resultsData=[NSArray arrayWithArray:(NSArray *)[result valueForKey:@"data"]];
if ([resultsData count]>0) {
[resultsData enumerateObjectsUsingBlock:^(id obj, NSUInteger idx, BOOL *stop) {
NSString *groupId=[obj valueForKey:@"id"];
NSString *groupName=[obj valueForKey:@"name"];
NSString *groupImageURL=[[[obj valueForKey:@"picture"] valueForKey:@"data"] valueForKey:@"url"];
[FBRequestConnection startWithGraphPath:[NSString stringWithFormat:@"/%@/members",groupId]
completionHandler:^(FBRequestConnection *connection, id result, NSError *error) {
if (!error) {
NSMutableDictionary *groupData=[[NSMutableDictionary alloc]init];
[groupData setValue:groupId forKey:@"groupdID"];
[groupData setValue:groupImageURL forKey:@"groupURL"];
[groupData setValue:[result valueForKey:@"data"] forKey:@"groupMembers"];
[groupData setValue:groupName forKey:@"groupdName"];
[groupsDataArray addObject:groupData];
// Sucess! Include your code to handle the results here
if (idx==[resultsData count]-1) {
success(groupsDataArray);
}
NSLog(@"user events: %@", result);
} else {
// An error occurred, we need to handle the error
// See: https://developers.facebook.com/docs/ios/errors
NSLog(@"error: %@", error);
}
}];
}];
}
else
{
success(groupsDataArray);
}
} else {
failure(error);
}
}];
}
我使用 FBGraph 在我的应用程序中集成了 facebook。现在我需要显示用户组,包括组成员。 **更新显示完整修复。
为此,我有以下代码:
[FBSession openActiveSessionWithReadPermissions:@[@"groups"]
allowLoginUI:NO
completionHandler:^(FBSession *session, FBSessionState state, NSError *error) {
switch (state) {
case FBSessionStateOpen:
[[FBRequest requestForMe] startWithCompletionHandler:^(FBRequestConnection *connection, NSDictionary<FBGraphUser> *user, NSError *error) {
if (error) {
NSLog(@"error:%@",error);
}
else
{
}
}];
break;
case FBSessionStateClosed:
case FBSessionStateClosedLoginFailed:
[FBSession.activeSession closeAndClearTokenInformation];
break;
default:
break;
}
} ];
它总是返回FBSessionStateClosedLoginFailed。为什么会这样?
【问题讨论】:
-
您如何让用户最初通过 facebook 登录您的应用程序?因为如果您对第一次使用的用户使用 openActiveSessionWithReadPermissions,那是行不通的。
-
嗨,Davetw,我进行了更改以从上面的 Facebook 中获取组。现在它正确地返回了组数据。但我这里有一个问题。每当应用程序回到后台并再次重新启动时,它都会抛出一个错误,提示 code = 2500; message = "必须使用活动访问令牌来查询有关当前用户的信息。";类型 = OAuthException;