我正在我的应用程序中集成 facebook 登录。我只是希望用户能够登录并且我得到他的生日和位置。
我获得了最新的 Facebook SDK 并成功地将其添加到我的应用程序中。我还在 facebook 上创建了一个新应用程序,并添加了提供给我的应用程序的密钥。
我创建了一个“使用 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。
为什么我正确登录并授予权限后会话仍然关闭?
任何帮助是极大的赞赏。
谢谢