SSO需要多次尝试登录

时间:2011-11-28 23:49:11

标签: iphone ios facebook ios4 single-sign-on

当用户尝试使用Facebook Connect的单点登录(SSO)登录我的iOS应用程序时,在让用户登录该应用程序之前,它会多次失败。这不会每次都发生,但会在用户第一次尝试使用Facebook登录时发生。

重现步骤:

  1. 用户应在iPhone上安装最新版本的Facebook iOS应用程序。
  2. 在多任务处理中,确保Facebook应用和基础应用都已关闭。
  3. 点按基本应用中的“与Facebook连接”按钮。
  4. 这将打开您的Facebook应用并重定向回您的基本应用,无需任何操作。
  5. 预期行为:

      应该调用
    • (void)fbDidLogin方法,该方法将在基础应用程序中进行身份验证。

    实际行为:

    • (void)fbDidNotLogin:(BOOL)cancelled是第一次被召唤。

2 个答案:

答案 0 :(得分:1)

一个非常好的起点是this link。您现在可以下载新的facebook SDK并将此SDK集成到您的iOS应用程序中。该链接描述了逐步解决方案。无需使用登录委托方法,如fbdidlogin等。

您可以在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];
 }

在视图控制器中,您可以使用以下条件来检查用户登录的天气:

if (FBSession.activeSession.isOpen) { 
     // your code here
 }

所有内容都在给出的链接中描述。

答案 1 :(得分:0)

你只需要解决FBConnect API的文件。只需查看Facebook.m文件中的那个文件,在这个方法中有一个方法“authorizeWithFBAppAuth”,“其他应用程序打开”的代码是写的..你只需要评论该代码并运行您的应用程序。它不会将您重定向到您设备中安装的默认Facebook应用程序。