2012-05-09 1 views
1

Метод FB.login JS API возвращает ответ со словарем информации о пользователе, включая идентификатор пользователя. Это существует на стороне клиента в JS api.Facebook JS API Войти в систему с идентификатором пользователя?

Если это будет отправлено обратно на сервер, на котором запущено приложение холста facebok, сервер должен доверять идентификатору пользователя, который не был подделан. Поскольку нет контрольной суммы, которая возвращается с ответом, я не вижу, как это можно гарантировать.

Я могу видеть, как вы можете взять идентификатор пользователя из подписанного запроса POST и сохранить его в сеансе, но это не кажется совершенно правильным. Я уверен, что есть способ сделать это безопасно, что меньше барокко, чем это.

Идеи?

ответ

1

Вы должны использовать Server-Side authentication для сервера.

Когда пользователь загружает ваше приложение и еще не выполнил аутентификацию, вы отправляете его в диалоговое окно auth, когда он возвращается, вы получаете код, который затем обменивается с серверами facebook, чтобы получить токен доступа обратно, затем вы можете запросить graph api для «/ me» и получить пользовательские данные, так как вы получаете его с серверов facebook, которые, как вы знаете, все в порядке.

Кроме того, если facebook POSTS на ваш URL-адрес холста вы получаете подписанный запрос, который был подписан с помощью вашего приложения, секрет, после его декодирования вы можете проверить его на свой секретный ключ, чтобы проверить его подлинность. Кроме того, подписанный запрос имеет идентификатор пользователя, чтобы вы знали, что это также защищено.

Я рекомендую использовать как аутентификацию на стороне сервера, так и клиентскую сторону, вы получаете разные токены (сервер длится 60 дней, а клиент - несколько часов), и вы можете использовать их оба.