在 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 单点登录 - 从我的视图控制器