/// <summary> /// Parses the session value from a cookie. /// </summary> /// <param name="appSecret"> /// The app Secret. /// </param> /// <param name="cookieValue"> /// The session value. /// </param> /// <returns> /// The Facebook session object. /// </returns> internal static FacebookSession ParseCookieValue(string appSecret, string cookieValue) { Contract.Requires(!String.IsNullOrEmpty(appSecret)); Contract.Requires(!String.IsNullOrEmpty(cookieValue)); Contract.Requires(!cookieValue.Contains(","), "Session value must not contain a comma."); // var cookieValue = "\"access_token=124973200873702%7C2.OAaqICOCk_B4sZNv59q8Yg__.3600.1295118000-100001327642026%7Cvz4H9xjlRZPfg2quCv0XOM5g9_o&expires=1295118000&secret=lddpssZCuPoEtjcDFcWtoA__&session_key=2.OAaqICOCk_B4sZNv59q8Yg__.3600.1295118000-100001327642026&sig=1d95fa4b3dfa5b26c01c8ac8676d80b8&uid=100001327642026\""; // var result = FacebookSession.Parse("3b4a872617be2ae1932baa1d4d240272", cookieValue); // Parse the cookie var dictionary = new JsonObject(); var parts = cookieValue.Replace("\"", string.Empty).Split('&'); foreach (var part in parts) { if (!string.IsNullOrEmpty(part) && part.Contains("=")) { var nameValue = part.Split('='); if (nameValue.Length == 2) { var s = FacebookUtils.UrlDecode(nameValue[1]); dictionary.Add(nameValue[0], s); } } } var signature = GenerateSessionSignature(appSecret, dictionary); if (dictionary.ContainsKey("sig") && dictionary["sig"].ToString() == signature) { return(new FacebookSession(dictionary)); } return(null); }