Аутентификация учетных данных, полученных от facebook, на моем собственном REST API
Я и моя команда работаем над собственной мобильной социальной сетью для Android, которая позволяет пользователям входить в систему с помощью Facebook. Я Facebook Facebook SDK для Android, но я изо всех сил пытаюсь понять, как правильно/безопасно аутентифицировать пользователя, который входит в систему с помощью facebook с учетными данными, полученными только от Facebook. В настоящее время вот как работает моя система:
Шаг 1.Из клиента Android пользователь нажимает войти с Facebook и предоставляет разрешения на мой апп.
Шаг 2. Когда Facebook предоставляет пользователю наши разрешения, он отправляет нам ответ, который включает в себя идентификатор пользователя FB, адрес электронной почты и маркер (среди прочего, если это первый раз, когда пользователь вошел в систему с помощью facebook)
Шаг 3. Информация отправляется в наш API для аутентификации
И вот тут мне немного непонятно....Как я могу проверить учетные данные facebook на своем сервере?
На данный момент я просто проверяю свою БД на наличие существующего пользователя с fb_uid и fb_email получил, но любой может получить любой fb_uid, и это не так уж трудно найти электронную почту, которую они использовали для регистрации на facebook, что означает, что кто-то гипотетически может легко взломать другой аккаунт пользователя с поддельным http-запросом.
1 ответ:
access_token
, если он действителен, позволит вам получить доступ к некоторым данным пользователя Facebook, для доступа к которым ваше приложение запросило разрешение. Один из способов проверить правильность получаемых учетных данных - использовать этотaccess_token
для запроса Facebook.Например, эта страница предлагает, как открыть свойства
access_token
с помощью вызоваGET
:GET graph.facebook.com/debug_token? input_token={token-to-inspect} &access_token={app-token-or-admin-token}
Который затем возвращает:
{ "data": { "app_id": 138483919580948, "application": "Social Cafe", "expires_at": 1352419328, "is_valid": true, "issued_at": 1347235328, "metadata": { "sso": "iphone-safari" }, "scopes": [ "email", "publish_actions" ], "user_id": 1207059 } }