Я и моя команда работают над собственной мобильной социальной сетью для Android, которая позволяет пользователям входить в систему с помощью Facebook. Ive удалось реализовать SDK для Android для Android, но им удалось выяснить, как правильно/безопасно аутентифицировать пользователя, который вступает в систему с использованием facebook с учетными данными, полученными только от Facebook. В настоящее время вот моя система:Аутентификация учетных данных, полученных от facebook, на моем собственном REST API
Шаг 1. Из клиента Android пользователь нажимает логин с помощью Facebook и предоставляет разрешения для моего приложения.
Шаг 2. После предоставления пользователя наших разрешений Facebook посылает нам ответ, который включает в себя пользователь Fb идентификатор пользователя, адрес электронной почты и маркер (среди другой информации, если это первый раз, когда пользователь вошел в системе с помощью Facebook)
Шаг 3. Информация отправляется к нашему API для аутентификации
и это, где им немного неясно .... Как я могу проверить на facebook учетные данные на моем сервере?
На данный момент я просто проверяю свой db для существующего пользователя с полученными fb_uid и fb_email, но каждый может получить anyones fb_uid, и ему не так сложно найти электронное письмо, которое они использовали для регистрации в facebook, что означает, что кто-то гипотетически может легко взломать другую учетную запись пользователя с поддельным HTTP-запросом.
Вы босс яблочный соус мой друг. Большое спасибо, сэр! – ChuckKelly
@Peter - Вы использовали этот подход в производстве? как это с точки зрения производительности? Я предполагаю, что было бы дорого обойтись для каждого запроса API. – jramoyo
@jramoyo: То, что я описываю выше, действительно необходимо, только если вы ошибаетесь (попробуйте использовать разрешения, которых у вас нет). Итак, да, я использовал его в «производстве», но только для обработки ошибок, если токен доступа не делает то, что мы хотим сделать. Это, безусловно, не нужно для всех (любых?) Запросов API (хотя токен доступа для непубличной информации). –