2012-02-24 68 views
2

我在這裏有一個情況,我仍然在如何解決它的問題。該會話無效,因爲用戶註銷

這裏的情景:

  1. 用戶訪問我的網站

  2. 用戶點擊登錄FB(爲了讓我的應用程序來獲取通過API圖他FB的信息)。

  3. 用戶使用他的FB憑證登錄並批准應用程序。

  4. 用戶被重定向回到他點擊Login to FB按鈕的同一頁面(在步驟2中,因爲該按鈕將調用方法RedirectToFacebookAuthorization())。

  5. 用戶然後從Facebook.com註銷(我的網站尚未實施此場景的任何註銷按鈕)。

  6. 用戶已成功從他的FB帳戶註銷,他重新訪問我的網站。

  7. 我的網站如下拋出一個異常消息:

異常詳細信息:Facebook.Utility.FacebookException:會話是無效的,因爲用戶註銷。

回答

1

如果你有一個例外,並且你知道它爲什麼被拋出。唯一的辦法就是在你的代碼中處理它,在你的網站上註銷用戶。

嘗試搜索檢查這個錯誤的一些變種,像this

if(ex.Message == "The session is invalid because the user logged out") 
{ 
    //timeout caused by user logging out of FB (auth token remains in qstring) 
    Session.Remove("Facebook_session_key"); 
    Session.Remove("Facebook_userId"); 
    Session.Remove("Facebook_session_expires"); 

    //redirect to login 
    Response.Redirect(@"http://www.Facebook.com/login.php?api_key=" + fbService.ApplicationKey + @"&v=1.0\"); 
} 

您也應該檢查exceptionErrorType屬性:

/// <summary> 
/// A value representing the specific type of error returned by Facebook. 
/// </summary> 
public enum ErrorType 
{ 
    ///<summary> 
    ///</summary> 
    Unknown = 1, 
    ///<summary> 
    ///</summary> 
    ServiceUnavailable = 2, 
    ///<summary> 
    ///</summary> 
    RequestLimit = 4, 
    ///<summary> 
    ///</summary> 
    Timeout = 102, 
    ///<summary> 
    ///</summary> 
    Signing = 104, 
    ///<summary> 
    ///</summary> 
    InvalidUser = 110, 
    ///<summary> 
    ///</summary> 
    InvalidAlbum = 120, 
    ///<summary> 
    ///</summary> 
    UserNotVisible = 210, 
    ///<summary> 
    ///</summary> 
    AlbumNotVisible = 220, 
    ///<summary> 
    ///</summary> 
    PhotoNotVIsible = 221, 
    ///<summary> 
    ///</summary> 
    InvaldFQLSyntax = 601 
}