我有一个情况,我仍然在探讨如何解决它。
以下是该方案:
用户访问我的网站
用户点击登录FB(以便我的应用程序通过Api图表检索他的FB信息)。
用户登录FB凭证并批准应用程序。
用户被重定向回他点击登录到FB按钮的同一页面(在步骤2中,因为该按钮将调用方法RedirectToFacebookAuthorization())。
用户然后从Facebook.com注销(我的网站没有为此方案实现任何注销按钮)。
用户已成功退出FB帐户,重新访问我的网站。
我的网站抛出了如下的异常消息:
异常详细信息:Facebook.Utility.FacebookException:会话无效,因为用户已注销。
答案 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\");
}
另外,您应该检查exception的ErrorType
属性:
/// <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
}