iphone - SSO 需要多次尝试登录

标签 iphone ios facebook ios4 single-sign-on

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

重现步骤:

  1. 用户应在其 iPhone 上安装最新版本的 Facebook iOS 应用。
  2. 在多任务处理中,确保 Facebook 应用和您的基本应用都已关闭。
  3. 在您的基本应用中点击“连接 Facebook”按钮。
  4. 这会打开您的 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/

相关文章:

ios - 如何锁定 UITextField 输入以在 SWIFT 上只接受从 A 到 Z 的一个字母

iphone - 如何使表格 View 可滚动

java - 使用 Spring Social 读取 Facebook 帖子相关对象

IOS企业应用无法安装请稍后重试

带有全局处理程序的 iOS NSError

ios - Facebook iOS SDK 3.x 提要对话框不见了?

facebook - URL "my website"处类型 'website' 的对象无效,因为属性 "app id"的给定值 'fb:app_id' 无法解析为类型 'fbid'

ios - 在 iOS 中收到 APNS 时打开 View Controller

iphone - 确定 iPhone 的大致位置

iphone - NSXMLParser 和针对 iOS 上的 DTD 的验证