У меня есть холст приложение Facebook. Я использую JS SDK для аутентификации пользователя на стороне браузера и запроса различной информации через FB.api (например, имя, друзья и т. Д.).Как пройти Facebook Id от клиента к серверу надежно
Я также хочу упорствовать дополнительную информацию о пользователе (не дотянул Facebook) в базу данных на моем сервере, сделав Ajax вызов:
{ userFavouriteColour: "Red" }
Чтобы сохранить это на сервере и ассоциированной с правильным пользователем , Мне нужно знать UID Facebook, и это создает проблему. Как передать uid с клиента на сервер.
Вариант 1: Добавить идентификатор пользователя для запроса Ajax:
{ uid: "1234567890",
userFavouriteColour: "Red" }
Это, очевидно, не хорошо. Было бы тривиально, если бы кто-нибудь сделал запрос ajax на мой веб-сервис, используя чужой Facebook Id и изменил их любимый цвет.
Вариант 2: На сервере извлеките uid из файла cookie: Возможно ли это? Я прочитал, что Facebook устанавливает cookie, содержащий идентификатор доступа и доступа, но у меня есть доступ к этому файлу cookie в моем домене? Что еще более важно, я могу надежно экстракт Uid образует печенье или это открыто для подмены так же, как вариант 1.
Вариант 3: Пользователь стороны сервера аутентификация на сервере: я мог бы использовать поддерживаемый сервер для проверки подлинности пользователя на моем сервере. Но будет ли это работать, если я уже использую аутентификацию на стороне клиента в браузере? У меня будет два разных токена доступа? Я хотел бы сделать запросы FB.api из браузера, поэтому мне нужен токен доступа на клиенте (а не только на сервере).
Это должно быть очень распространенным сценарием, так что я думаю, что я что-то фундаментальное отсутствует. Я прочитал много документации Facebook (различных потоков аутентификации маркеров доступа, signed_request и т.д.) и многих постов на SO, но я до сих пор не понимаю, как на стороне клиента аутентификации и на стороне сервера игры аутентификации хорошо вместе.
Короче говоря, я хочу знать личность пользователя на сервере, но все же делать запросы к api-mail Facebook из клиентского браузера?
(я использую ASP.NET и # SDK Facebook C на сервере)
EDIT: Добавлено щедрот. Я надеялся получить более действенную, официальную рекомендацию о том, как справиться с этой ситуацией, или даже пример. Как уже было сказано, я уже прочитал много официальных документов FB об аутентификационных потоках, но я до сих пор не могу найти ничего определенного, как совместная работа на стороне клиента и на стороне сервера.
Если я передаю accessToken через ajax, есть ли способ извлечь Facebook userId из токена на моем сервере без запроса в Facebook? И это безопасно для подмены? Я не хочу делать запрос FB api с моего сервера, поэтому я хочу извлечь Id пользователя на основе информации, переданной клиентом. – njr101
хорошо, FB.getLoginStatus (https://developers.facebook.com/docs/reference/javascript/FB.getLoginStatus/) в Javacript возвращает больше токена доступа, но также идентификатор пользователя, поэтому вы можете отправить его на сервер side ... – Roni
Спасибо за ссылку - это объясняет, как получить userId на клиенте. Возможно, я не очень ясно объясняю себя. Если я передам этот userId на мой сервер, тогда он будет открыт для подмены. Как я могу получить userId на сервере безопасным образом? – njr101