当用户尝试使用 Facebook Connect 的单点登录 (SSO) 登录我的 iOS 应用程序时,在让用户登录应用程序之前失败了多次。这种情况不会每次都发生,但会在用户第一次尝试使用 Facebook 登录时发生。
重现步骤:
- 用户应在其 iPhone 上安装最新版本的 Facebook iOS 应用。
- 在多任务处理中,确保 Facebook 应用和您的基本应用都已关闭。
- 在您的基本应用中点击“连接 Facebook”按钮。
- 这会打开您的 Facebook 应用程序并重定向回您的基本应用程序,无需任何操作。
预期行为:
(void)fbDidLogin
方法应该被调用,这将在基础应用程序中进行身份验证。
实际行为:
(void)fbDidNotLogin:(BOOL)cancelled
第一次单独调用。
最佳答案
一个很好的起点是 this link .您现在可以下载新的 facebook SDK,并将此 SDK 集成到您的 iOS 应用程序中。该链接描述了逐步解决方案。无需使用 fbdidlogin 等登录委托(delegate)方法。
您可以在 sessionStateChanged 事件的帮助下检查用户是否登录。
- (void)sessionStateChanged:(FBSession *)session
state:(FBSessionState) state
error:(NSError *)error
{
switch (state) {
case FBSessionStateOpen:
if (!error) {
// We have a valid session
NSLog(@"User session found");
}
break;
case FBSessionStateClosed:
NSLog(@"session state closed");
break;
case FBSessionStateClosedLoginFailed:
[FBSession.activeSession closeAndClearTokenInformation];
break;
default:
break;
}
[[NSNotificationCenter defaultCenter] postNotificationName:FBSessionStateChangedNotification
object:session];
}
在您的 View Controller 中,您可以使用以下条件来检查用户是否登录:
if (FBSession.activeSession.isOpen) {
// your code here
}
所有内容都在给定的链接中进行了描述。
关于iphone - SSO 需要多次尝试登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8304034/