2012-02-10 71 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