Аутентификация учетных данных, полученных от 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 4

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
    }
}