private bool HandleAsExpiredToken(FacebookOAuthException OAuth_ex) { bool _HandleAsExpiredToken = false; if (OAuth_ex.ErrorCode == 190) //OAuthException { switch (OAuth_ex.ErrorSubcode) { case 458: //App Not Installed _HandleAsExpiredToken = true; break; case 459: //User Checkpointed _HandleAsExpiredToken = true; break; case 460: //Password Changed _HandleAsExpiredToken = true; break; case 463: //Expired _HandleAsExpiredToken = true; break; case 464: //Unconfirmed User _HandleAsExpiredToken = true; break; case 467: //Invalid access token _HandleAsExpiredToken = true; break; default: _HandleAsExpiredToken = false; break; } } else if (OAuth_ex.ErrorCode == 102) { //API Session. Login status or access token has expired, //been revoked, or is otherwise invalid _HandleAsExpiredToken = true; } else if (OAuth_ex.ErrorCode == 10) { //API Permission Denied. Permission is either not granted or has been removed - //Handle the missing permissions _HandleAsExpiredToken = false; } else if (OAuth_ex.ErrorCode >= 200 && OAuth_ex.ErrorCode <= 299) { //API Permission (Multiple values depending on permission). //Permission is either not granted or has been removed - Handle the missing permissions _HandleAsExpiredToken = false; } return(_HandleAsExpiredToken); }
private static void HandleException(string url, Exception e, out Exception resultException) { resultException = null; string message = null; HttpStatusCode statusCode = HttpStatusCode.OK; string type = null; if (e is WebException) { WebException webException = (WebException)e; HttpWebResponse response = (HttpWebResponse)webException.Response; message = response.GetBody(); statusCode = response.StatusCode; dynamic jsonResult = JsonConvert.DeserializeObject(message); if (jsonResult != null && jsonResult.error != null) { if (jsonResult.error.type != null) { type = jsonResult.error.type; } else { type = jsonResult.error; } } switch (type) { case "OAuthException": case "190": resultException = new FacebookOAuthException(type, message); break; default: resultException = new FacebookApiException(type, message); break; } } else { message = e.Message; } // replacing ; character since it's our delimiter url = url.Replace(";", "%3b"); message = message.Replace(";", "%3b"); StringBuilder sb = new StringBuilder(); sb.AppendFormat("{0};{1};{2};{3}", (int)statusCode, statusCode, url, message); Logger.Current.Error("GraphAPI.HandleException", sb.ToString(), e); }
protected override void OnException(ExceptionContext filterContext) { if (filterContext.Exception is FacebookApiLimitException) { //Status message banner notifying user to try again later filterContext.ExceptionHandled = true; ViewBag.GlobalStatusMessage = "Facebook Graph API limit reached, Please try again later..."; } else if (filterContext.Exception is FacebookOAuthException) { FacebookOAuthException OAuth_ex = (FacebookOAuthException)filterContext.Exception; if (OAuth_ex.ErrorCode == 190 || OAuth_ex.ErrorSubcode > 0) { filterContext.ExceptionHandled = true; filterContext.Result = GetFacebookLoginURL(); } else { //redirect to Facebook Custom Error Page ViewBag.ErrorMessage = filterContext.Exception.Message; filterContext.ExceptionHandled = true; filterContext.Result = RedirectToAction("Index", "Error"); } } else if (filterContext.Exception is FacebookApiException) { //redirect to Facebook Custom Error Page ViewBag.ErrorMessage = filterContext.Exception.Message; filterContext.ExceptionHandled = true; filterContext.Result = RedirectToAction("Index", "Error"); } else { base.OnException(filterContext); } }
public static ExceptionWithCode FacebookOauthException(FacebookOAuthException fbOauthException) { return(new ExceptionWithCode(40001, fbOauthException.Message, fbOauthException)); }