Я разрабатываю приложение, которое использует Facebook для аутентификации. До сих пор, что у меня есть следующий:Facebook login architecture
- client-> FB: данные аутентификации (FB пользователя & пароль),
- FB-> Клиент: FB ID, FB лексема, ...
- Client-> AppServer: данные FB (идентификатор, токен, ..)
- AppServer-> Клиент: OK/Не в порядке, любые необходимые данные.
Где:
- Client: Приложение устанавливается в устройстве пользователя (в данном случае, IOS),
- FB: FB-сервер (клиент общается с ним через SDK ФБ),
- AppServer: сервер моего приложения.
Суть всего в том, чтобы подтвердить, является ли пользователь реальным. Проблема в том, что в # 3 Клиент мог отправлять случайный идентификатор FB или токен FB в AppServer, поэтому вопрос: есть ли все-таки проверить в AppServer, действительно ли эти данные FB действительно реальны?
Из моего опыта, на шаге 3, вы должны просто передать токен fb на свой сервер приложений. Затем сервер приложений может использовать токен, чтобы получить идентификатор, электронную почту и т. Д. (Если вы запросили разрешение у пользователя). Вам не нужно беспокоиться о том, что токен FB является поддельным, так как, когда вы проверяете его с помощью facebook на стороне сервера, он не сработает, если facebook считает его подделкой. Это связано с тем, что facebook привязывает токен к id приложения fb, секретному имени домена/приложения и т. Д. Если кому-то удается подделать это, тогда у вас есть проблемы, о которых нужно беспокоиться. – TheDaveJay
@ TheDaveJay и как мне это сделать? Как если бы AppServer был клиентом FB? (например, если сервер написан на PHP с помощью FB SDK для PHP?) –
Посмотрите документацию на facebook: https://developers.facebook.com/docs/facebook-login/manually-build- a-login-flow # подтвердить Существует заголовок раздела: «Проверка токенов доступа». Вы получаете запрос Get к API и, если он имеет успешный ответ, токен не является подделкой. Это вернет в него полезную нагрузку JSON с идентификатором пользователя и т. Д. – TheDaveJay