我花了一天时间在这个问题上工作的大部分时间。我发现,当你使用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];
}
如果这可以帮助你请了速度这个线程和我的职务,以帮助他人找到它。
显然,问题本身就解决了:屏幕恢复正常。 – SebastianC 2012-03-07 09:26:33
塞巴斯蒂安,你做了什么使屏幕恢复正常吗?我有同样的问题,它显示的唯一按钮是“好”按钮,不允许我注销。 – flavianatill 2012-03-09 12:51:18
嘿lancelotavery。我没有做任何事情,几天后正常屏幕再次出现。顺便说一下,另一个屏幕在几个用户的设备上,所以我将这个问题固定在Facebook上。 – SebastianC 2012-03-12 07:00:17