Это отсутствует в ответах, перечисленных до сих пор:
После успешного входа в систему Facebook рекомендует вам проверить, действительно ли файлы cookie являются законными и размещены ими на клиентском компьютере.
Вот два метода, которые можно использовать вместе, чтобы решить эту проблему. Возможно, вы захотите добавить метод IsValidFacebookSignature в класс утилиты calebt. Обратите внимание, что я немного изменил его метод GetFacebookCookie.
private bool IsValidFacebookSignature()
{
//keys must remain in alphabetical order
string[] keyArray = { "expires", "session_key", "ss", "user" };
string signature = "";
foreach (string key in keyArray)
signature += string.Format("{0}={1}", key, GetFacebookCookie(key));
signature += SecretKey; //your secret key issued by FB
MD5 md5 = MD5.Create();
byte[] hash = md5.ComputeHash(Encoding.UTF8.GetBytes(signature.Trim()));
StringBuilder sb = new StringBuilder();
foreach (byte hashByte in hash)
sb.Append(hashByte.ToString("x2", CultureInfo.InvariantCulture));
return (GetFacebookCookie("") == sb.ToString());
}
private string GetFacebookCookie(string cookieName)
{
//APIKey issued by FB
string fullCookie = string.IsNullOrEmpty(cookieName) ? ApiKey : ApiKey + "_" + cookieName;
return Request.Cookies[fullCookie].Value;
}
SecretKey и ApiKey - это значения, предоставленные вам Facebook. В этом случае необходимо установить эти значения, предпочтительно из файла .config.