2016-01-04 3 views
0

Я разрабатываю приложение, которое использует Facebook для аутентификации. До сих пор, что у меня есть следующий:Facebook login architecture

  1. client-> FB: данные аутентификации (FB пользователя & пароль),
  2. FB-> Клиент: FB ID, FB лексема, ...
  3. Client-> AppServer: данные FB (идентификатор, токен, ..)
  4. AppServer-> Клиент: OK/Не в порядке, любые необходимые данные.

Где:

  • Client: Приложение устанавливается в устройстве пользователя (в данном случае, IOS),
  • FB: FB-сервер (клиент общается с ним через SDK ФБ),
  • AppServer: сервер моего приложения.

Суть всего в том, чтобы подтвердить, является ли пользователь реальным. Проблема в том, что в # 3 Клиент мог отправлять случайный идентификатор FB или токен FB в AppServer, поэтому вопрос: есть ли все-таки проверить в AppServer, действительно ли эти данные FB действительно реальны?

+0

Из моего опыта, на шаге 3, вы должны просто передать токен fb на свой сервер приложений. Затем сервер приложений может использовать токен, чтобы получить идентификатор, электронную почту и т. Д. (Если вы запросили разрешение у пользователя). Вам не нужно беспокоиться о том, что токен FB является поддельным, так как, когда вы проверяете его с помощью facebook на стороне сервера, он не сработает, если facebook считает его подделкой. Это связано с тем, что facebook привязывает токен к id приложения fb, секретному имени домена/приложения и т. Д. Если кому-то удается подделать это, тогда у вас есть проблемы, о которых нужно беспокоиться. – TheDaveJay

+0

@ TheDaveJay и как мне это сделать? Как если бы AppServer был клиентом FB? (например, если сервер написан на PHP с помощью FB SDK для PHP?) –

+0

Посмотрите документацию на facebook: https://developers.facebook.com/docs/facebook-login/manually-build- a-login-flow # подтвердить Существует заголовок раздела: «Проверка токенов доступа». Вы получаете запрос Get к API и, если он имеет успешный ответ, токен не является подделкой. Это вернет в него полезную нагрузку JSON с идентификатором пользователя и т. Д. – TheDaveJay

ответ

0

Это работает для меня:

Учитывая FB_CLIENT_TOKEN и FB_CLIENT_ID исходит от клиента, и зная ваши FB_APP_ID и FB_APP_SECRET, мы хотим проверить на нашем сервере если фб счет от клиента реально. Тогда: