我正在将 facebook 登录集成到我的应用程序中。我只是希望用户能够登录并获得他的生日和位置。
我获得了最新的 Facebook SDK 并成功将其添加到我的应用程序中。我还在 Facebook 上创建了一个新应用程序,并将提供的 key 添加到我的应用程序中。
我创建了一个按钮“使用 facebook 登录”并完成了以下操作
当用户点击按钮时
// handler for button click
- (IBAction)facebookLoginTouched:(id)sender {
[self openSessionWithAllowLoginUI:YES];
}
此方法将向用户显示 facebook 登录页面以获得他的许可
-(BOOL)openSessionWithAllowLoginUI:(BOOL)allowLoginUI {
NSArray *permissions = [[NSArray alloc] initWithObjects:
@"user_location",
@"user_birthday",
nil];
return [FBSession openActiveSessionWithReadPermissions:permissions
allowLoginUI:allowLoginUI
completionHandler:^(FBSession *session,
FBSessionState state,
NSError *error) {
[self HandleLogin];
}];
}
然后如果登录和权限成功
- (void)HandleLogin {
if (FBSession.activeSession.isOpen) {
//THIS IS NEVER REACHED
[FBRequestConnection
startForMeWithCompletionHandler:^(FBRequestConnection *connection,
id<FBGraphUser> user,
NSError *error) {
//DO SOMETHING WITH THE USER INFO
}];
}
}
我的问题:
当我点击按钮时,Facebook 页面正确进入,我输入我的用户名/密码。它正确地记录了我,并且我允许该应用程序访问我的信息。完成后,我成功返回应用程序。
但是,当代码到达 FBSession.activeSession.isOpen
时,它返回 false。
为什么我正确登录并授予权限后 session 仍然关闭?
非常感谢任何帮助。
谢谢
最佳答案
您可能缺少处理 Facebook 应用返回的代码。在您的应用委托(delegate)实现文件中添加以下内容:
- (BOOL)application:(UIApplication *)application
openURL:(NSURL *)url
sourceApplication:(NSString *)sourceApplication
annotation:(id)annotation {
// attempt to extract a token from the url
return [FBSession.activeSession handleOpenURL:url];
}
关于objective-c - Facebook SDK : ActiveSession is still closed after I give permission,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13383826/