Очистить веб-контекст Facebook на стороне сервера - PullRequest
1 голос
/ 09 февраля 2012

Я реализовал аутентификацию на стороне клиента, используя Javascript SDK Facebook.Я проверяю контекст FacebookWeb в событии Application_AuthenticateRequest, чтобы определить, вошел ли пользователь в систему, и соответственно установить HttpCoontext.Current.User IPrincipal.

Если я удаляю пользователя из базы данных, я хочу удалитьВеб-контекст Facebook, чтобы убедиться, что HttpContext.Current.User.IsAuthenticated имеет значение false.Также, если пользователь отменяет авторизацию моего приложения, я хотел бы удалить веб-контекст Facebook.Я не хочу выводить их из Facebook - просто удалите веб-контекст facebook, чтобы сессия больше не проходила проверку подлинности.

Как мне это сделать на стороне сервера?

1 Ответ

1 голос
/ 09 февраля 2012

Лучший метод, который я нашел, - это вручную удалить файл cookie fbsr_ {id вашего приложения}. Конечно, это может быть сделано только тогда, когда пользователь взаимодействует с вашим приложением. Если они удалят ваше приложение или иным образом деавторизуют его, находясь на facebook.com, вы не сможете удалить этот файл cookie, пока они в следующий раз не посетят ваше приложение.

Вот код, который я использую для этого с помощью Facebook C # SDK:

string cookieName = "fbsr_" + FacebookApplication.Current.AppId;
if (Request.Cookies[cookieName] != null) {
   HttpCookie myCookie = new HttpCookie(cookieName);
   myCookie.Expires = DateTime.Now.AddDays(-1d);
   Response.Cookies.Add(myCookie);
}

Я делаю это всякий раз, когда получаю исключение OAuth от Facebook, указывающее, что используемый токен доступа пользователя недействителен. Затем я заставляю пользователя пройти повторную аутентификацию.

...