IOS Facebook SDK 3.1::使用 fb ios sdk 3.1 登录:只有 openActiveSession 进行应用内登录

标签 ios facebook authentication

我正在测试新的 3.1 框架。如果我调用 [FBSession openActiveSessionWithReadPermissions:allowLoginUI:completionHandler 我可以看到 UIAlertView 是如何弹出的(因为我在 ios 中有 facebook 登录)。

但是,如果我自己创建 session 并调用 openWithCompletionHandler,我将被重定向到 facebook 应用程序或 webview(取决于我是否安装了 facebook 应用程序)。

这是坏了吗?我错过了什么吗?

我不想使用 activeSession 的原因是因为我需要设置 urlSchemeSuffix,而且我在 activeSession 中看不到任何方法(因为这些仅在FBSession 的初始化方法)。

谢谢

最佳答案

查看他们的代码,看起来你需要设置一个特定的行为来让它使用系统帐户(这是来自 FB SDK):

+ (BOOL)openActiveSessionWithPermissions:(NSArray*)permissions
                        allowLoginUI:(BOOL)allowLoginUI
                  allowSystemAccount:(BOOL)allowSystemAccount
                              isRead:(BOOL)isRead
                     defaultAudience:(FBSessionDefaultAudience)defaultAudience
                   completionHandler:(FBSessionStateHandler)handler {
    // is everything in good order?
    [FBSession validateRequestForPermissions:permissions
                         defaultAudience:defaultAudience
                      allowSystemAccount:allowSystemAccount
                                  isRead:isRead];
    BOOL result = NO;
    FBSession *session = [[[FBSession alloc] initWithAppID:nil
                                           permissions:permissions
                                       defaultAudience:defaultAudience
                                       urlSchemeSuffix:nil
                                    tokenCacheStrategy:nil]
                      autorelease];
    if (allowLoginUI || session.state == FBSessionStateCreatedTokenLoaded) {
        [FBSession setActiveSession:session];
        // we open after the fact, in order to avoid overlapping close
        // and open handler calls for blocks
        FBSessionLoginBehavior howToBehave = allowSystemAccount ?
                                               FBSessionLoginBehaviorUseSystemAccountIfPresent :
                                               FBSessionLoginBehaviorWithFallbackToWebView;
    [session openWithBehavior:howToBehave
            completionHandler:handler];
    result = session.isOpen;
    }
    return result;
}

关于IOS Facebook SDK 3.1::使用 fb ios sdk 3.1 登录:只有 openActiveSession 进行应用内登录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12608008/

相关文章:

iphone - 如何将按钮添加到 QLPreviewController

iphone - Iphone 移动框架的建议?

Facebook 发送按钮忽略 OG 元标签

html - 在 fbml 中悬停 img

security - 具有多个 JAAS 安全领域的 Java 应用程序

ios - UITableView 自动布局灵活高度

ios - 重命名 AppDelegate 时出现问题 - 构建正常,但在寻找 AppDelegate.m 时出现问题

javascript - Meteor.loginWithFacebook 不存储电子邮件地址

objective-c - 使用选项卡栏 Controller ( Storyboard)阻止访问 UIViewControllers

security - 保护网站管理部分的最佳做法是什么?