会话无效,因为用户已注销

时间:2012-02-24 09:52:50

标签: c# javascript .net facebook api

我有一个情况,我仍然在探讨如何解决它。

以下是该方案:

  1. 用户访问我的网站

  2. 用户点击登录FB(以便我的应用程序通过Api图表检索他的FB信息)。

  3. 用户登录FB凭证并批准应用程序。

  4. 用户被重定向回他点击登录到FB按钮的同一页面(在步骤2中,因为该按钮将调用方法RedirectToFacebookAuthorization())。

  5. 用户然后从Facebook.com注销(我的网站没有为此方案实现任何注销按钮)。

  6. 用户已成功退出FB帐户,重新访问我的网站。

  7. 我的网站抛出了如下的异常消息:

  8. 异常详细信息:Facebook.Utility.FacebookException:会话无效,因为用户已注销。

1 个答案:

答案 0 :(得分: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
}