2012-02-10 76 views
1

Facebook似乎更改了SSO页面,因此用户无法直接注销/切换帐户。我的意思是这样的:通过Safari的iOS SSO:无法注销/切换用户

a)您有任何iOS应用程序安装在使用Facebook的SDK,例如Voxer(不是我的应用程序),并且你做有Facebook的应用程序安装
b)您通过Safari正常登录
c)您再次注销并尝试切换用户,但Safari上显示的屏幕只允许您再次登录同一用户(OK按钮)。

可以导航到facebook.com并注销,但对大多数用户来说这并不直观。告诉人们安装Facebook应用程序也不是非常人性化。

我没有发现任何关于这个或者在developers.facebook.com或这里,我错过了什么,或者我应该提交一个错误报告?

感谢, 塞巴斯蒂安

+0

显然,问题本身就解决了:屏幕恢复正常。 – SebastianC 2012-03-07 09:26:33

+0

塞巴斯蒂安,你做了什么使屏幕恢复正常吗?我有同样的问题,它显示的唯一按钮是“好”按钮,不允许我注销。 – flavianatill 2012-03-09 12:51:18

+0

嘿lancelotavery。我没有做任何事情,几天后正常屏幕再次出现。顺便说一下,另一个屏幕在几个用户的设备上,所以我将这个问题固定在Facebook上。 – SebastianC 2012-03-12 07:00:17

回答

2

我花了一天时间在这个问题上工作的大部分时间。我发现,当你使用SSO和呼叫:

[Facebook的注销:自我]

从您的代码调用;

Facebook的API方法:

- (void)logout:(id<FBSessionDelegate>)delegate { 

    self.sessionDelegate = delegate; 
    [_accessToken release]; 
    _accessToken = nil; 
    [_expirationDate release]; 
    _expirationDate = nil; 

    NSHTTPCookieStorage* cookies = [NSHTTPCookieStorage sharedHTTPCookieStorage]; 
    NSArray* facebookCookies = [cookies cookiesForURL:[NSURL URLWithString:@"http://login.facebook.com"]]; 

    for (NSHTTPCookie* cookie in facebookCookies) { 
    [cookies deleteCookie:cookie]; 
    } 

    if ([self.sessionDelegate respondsToSelector:@selector(fbDidLogout)]) { 
    [_sessionDelegate fbDidLogout]; 
    } 
} 

Facebook的API也无效访问令牌和到期日期变量,并尝试删除移动Safari浏览器的cookies,但由于某些原因,可能是苹果的错饼干是不是真的被删除。因此,当您尝试在下次登录时,您的移动Safari将会看到cookie,并且它会显示:

“您已经授权....按”确定“继续,以...登录。”

在Facebook找到修复程序或Apple修复其损坏的API之前,我们必须通过Safari绕过SSO。以下是我对Facebook.m所做的更改,以强制执行旧的登录对话框。如果你使用这些改变,他们可能不会永远工作,但我猜他们会工作很长一段时间。也可以肯定,这与最新的facebook API一起工作,我更新到这篇文章的最新版本(2011年11月版本)。

从你的代码中调用:

[facebook authorize:permissions]; 

Facebook API method: 

- (void)authorize:(NSArray *)permissions { 
    self.permissions = permissions; 

// [self authorizeWithFBAppAuth:YES safariAuth:YES]; 
    [self authorizeWithFBAppAuth:NO safariAuth:NO]; 
} 

如果这可以帮助你请了速度这个线程和我的职务,以帮助他人找到它。

+0

对于OP,至少可以将您的答案与写它的原始人联系起来。 http://stackoverflow.com/a/8346319/1504996 – Steven 2014-09-21 22:05:01