在 Facebook IOS SDK 中禁用单点登录 (SSO)

Posted

技术标签:

【中文标题】在 Facebook IOS SDK 中禁用单点登录 (SSO)【英文标题】:Disable Single Sign On (SSO) in Facebook IOS SDK 【发布时间】:2011-06-22 06:02:50 【问题描述】:

我们已经构建了一个使用 Facebook SDK 的 ios 应用。不幸的是,我们的客户要求我们在应用程序中禁用后台,这意味着 Facebook 单点登录 (SSO) 方案对我们不起作用(因为我们的应用程序现在在登录/授权后启动时从头开始在 Facebook 应用中)。

所以问题是:我们能否在 Facebook iOS SDK 中禁用 SSO,使其表现得像在旧版 SDK 中所做的那样,Facebook 登录/授权发生在应用内 Web 视图中?

【问题讨论】:

【参考方案1】:

在 FBconnect 库中打开 Facebook.m 文件并找到:

- (void)authorize:(NSArray *)permissions
         delegate:(id<FBSessionDelegate>)delegate 

设置:

   [self authorizeWithFBAppAuth:NO safariAuth:NO];

而 FBconnect 将仅通过内部弹出窗口进行授权...

【讨论】:

我们可以在 FacebookSDK 3.1 和 IOS 6 中做同样的事情吗? @Johnykutty 我曾尝试在 Facebook SDK 3.1 中执行此操作,但没有找到任何东西。我们可以像 kviksilver 在他的回答中提到的那样做 FBConnect。【参考方案2】:

我不知道你是否可以禁用 sso,但我有一个技巧可以做到这一点。(每次登录 Facebook 都需要凭据)。

在 appDelegate 的 didFinishLaunchingWithOptions 方法中写下这行

NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage];
for (NSHTTPCookie* cookie in
[[NSHTTPCookieStorage sharedHTTPCookieStorage] cookies]) 
NSString *domainStr=(NSString *)[cookie domain];
NSLog(@"%@",domainStr);
if([domainStr isEqualToString:@".facebook.com" ])

[cookies deleteCookie:cookie];

【讨论】:

【参考方案3】:

[self authorizeWithFBAppAuth:NO safariAuth:NO];

【讨论】:

【参考方案4】:

您可以在调用 facebook 身份验证过程之前保存应用的状态。 但如果 FB 应用在您用户的手机上,则

[facebook authorize:permissions delegate:self]

会将您重定向到它。

但如果你只有基本需求,你可以使用 FB SDK 的 webview 部分。使用:

[facebook authorize:permissions delegate:self]

将使 FB SDK 显示一个负责授权过程的 web 视图。

【讨论】:

以上是关于在 Facebook IOS SDK 中禁用单点登录 (SSO)的主要内容,如果未能解决你的问题,请参考以下文章

iOS - Facebook 单点登录 - 从我的视图控制器

facebook-ios-sdk 注销问题

支持 IOS SDK 5 的 Facebook API

iOS Facebook 登录 SDK 4.12

通过 facebook ios SDK 结合 Azure 移动服务获取名字和姓氏

iOS 问题中的 Facebook 单点登录