Я использую Facebook C # SDK для создания приложений Facebook тоже. То, что я не использую, это их аутентификация. По моему опыту, аутентификация - самая сложная часть всей реализации приложения Facebook. Сделать это правильно для всех устройств и всех браузеров сложно.
Вы можете использовать параметр state
для передачи выбранных вами данных в Facebook как часть дизайна OAuth на стороне сервера. Facebook C # SDK решил использовать параметр state
для предоставления контекста, куда перенаправить пользователя по завершении аутентификации. Это не то, как Facebook намеревался использовать state
. От https://developers.facebook.com/docs/authentication/:
Подделка межсайтовых запросов (CSRF)
Подделка межсайтовых запросов - это атака, при которой доверенный (аутентифицированный и авторизованный) пользователь неосознанно выполняет действие на веб-сайте. Чтобы предотвратить эту атаку, вы должны передать идентификатор в параметре состояния, а затем проверить соответствие параметров состояния в ответе. Мы настоятельно рекомендуем, чтобы любое приложение, реализующее имя пользователя Facebook, включало защиту CSRF с использованием этого механизма.
В моей собственной реализации OAuth на стороне сервера я генерирую GUID, объединяю некоторую информацию о состоянии, такую как контроллер, к которой необходимо вернуться, шифрую эту строку и передаю ее в качестве параметра состояния.
Когда он возвращается, я расшифровываю его и ухожу. Вы можете сделать что-то подобное, чтобы передать любые данные о состоянии, которые вам нужны.
Дизайн OAuth на стороне сервера довольно прост и хорошо документирован на странице, указанной выше.