我花了一天時間在這個問題上工作的大部分時間。我發現,當你使用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