Ios openSessionWithAllowLoginUI几乎总是返回NO
我最近完成了将最新的FB iOS SDK(3.0)集成到我的应用程序(iOS 5)中的工作。我已经完成了教程,根据FB提供的文档,一切似乎都准备就绪。我遇到的问题是,每当我检查是否需要通过以下方式进行身份验证时: 如果(![self-openSessionWithAllowLoginUI:NO]) { [self-openSessionWithAllowLoginUI:是]; } 。。。openSessionWithAllowLoginUI通常(并且几乎总是在[FBSession.activeSession close]之后)返回否,我必须转换到身份验证对话框才能获得有效的会话。根据我的理解,[FBSession.activeSession close]不应破坏SDK重用旧令牌的能力,并允许我在不显示登录对话框的情况下重新创建会话 请注意,在我的应用程序中,在应用程序生命周期内,我不需要Facebook身份验证。因此,我倾向于按需建立会话,并在完成时使用[FBSession.activeSession close]将其拆下,而不是仅在applicationWillTerminate中使用[FBSession.activeSession close] 有没有人对我可能做错什么或尝试什么有什么建议Ios openSessionWithAllowLoginUI几乎总是返回NO,ios,facebook,Ios,Facebook,我最近完成了将最新的FB iOS SDK(3.0)集成到我的应用程序(iOS 5)中的工作。我已经完成了教程,根据FB提供的文档,一切似乎都准备就绪。我遇到的问题是,每当我检查是否需要通过以下方式进行身份验证时: 如果(![self-openSessionWithAllowLoginUI:NO]) { [self-openSessionWithAllowLoginUI:是]; } 。。。openSessionWithAllowLoginUI通常(并且几乎总是在[FBSession.activeS
谢谢 我也有同样的问题,我想不出。。。 选择器openSessionWithAllowLoginUI:无法为用户检索保存的会话,并且我必须始终向用户显示登录UI 我希望尽快解决它 更新------------- 我理解:当用户登录Facebook时,FB SDK会对sessionStateChanged进行两次调用: 第一个用于FBSessionStateOpen,第二个用于FBSessionStateClosed。因此,如果检查AppDelegate.m文件,您会发现如下代码:
case FBSessionStateClosed:
case FBSessionStateClosedLoginFailed:
[FBSession.activeSession closeAndClearTokenInformation];
break;
调用closeAndClearTokenInformation:清除所有令牌信息,这样每次运行应用程序时,它都会向用户询问登录UI
现在的问题是:为什么Facebook先发送FBSessionStateOpen,然后立即发送FBSessionStateClosed???我永远无法让openSessionWithAllowLoginUI正常工作。相反,请使用以下命令:
[FBSession openActiveSessionWithPermissions:[NSArray arrayWithObject:@"user_relationships"] allowLoginUI:YES completionHandler:^(FBSession *session, FBSessionState status, NSError *error) {
switch (status) {
case FBSessionStateOpen:
[self start];
break;
case FBSessionStateClosed:
break;
case FBSessionStateCreated:
break;
case FBSessionStateCreatedOpening:
break;
case FBSessionStateClosedLoginFailed:
break;
case FBSessionStateOpenTokenExtended:
break;
case FBSessionStateCreatedTokenLoaded:
break;
}
}];
添加[self start]方法并修改权限数组以满足您的需要。这是一致的。我在3.1.1中也看到了这种行为-我删除了:[FBSession.activeSession closeAndClearTokenInformation];从案例FBSessionStateClosed:因为这将始终使我的令牌无效-(void)start做什么?