2012-02-24 26 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 
}