Комбинированная аутентификация на стороне клиента и сервера FaceBook

У меня есть следующий вариант использования

  1. Мое приложение на iOS использует FaceBook iOS SDK для аутентификации в FB
  2. Затем приложение делает REST-вызов через https на мой сервер, чтобы зарегистрировать учетную запись FB в своей служебной учетной записи (услуга, которую я предлагаю)

На шаге 2 клиент отправляет UID FaceBook.

Моя проблема в том, что сервер не имеет интеграции с FB, поэтому должен отвечать клиенту, отправляющему правильный UID FaceBook.

Итак, проблема очевидна, хакер может привязать чужой аккаунт FaceBook к своему сервисному аккаунту.

Я хотел бы, чтобы сервер (Java) мог проверить, что пользователь, отправляющий запрос, владеет рассматриваемым UID Facebook.

Я искал в Интернете и не могу найти ничего, что, как я думаю, будет работать.

Я наткнулся на расплывчатый пост об использовании поля FB signedRequest, его можно было передать на сервер для проверки пользователя.

Любая идея будет оценена.


person user1177292    schedule 17.01.2013    source источник


Ответы (1)


Вот мысль:

Как только вы аутентифицируете пользователя в своем приложении iOS, получите access_token и передайте только это в своем вызове REST на свой сервер.

На стороне сервера сделайте запрос к https://graph.facebook.com/me?access_token=..., используя access_token, который вы передали. Если токен доступа действителен, вы получите все данные пользователя, подтверждающие, что у вас есть действительный аутентифицированный пользователь.

Если вы хотите быть более уверенным, вы также можете запросить http://graph.facebook.com/app?access_token=..., чтобы убедиться, что токен доступа был создан вашим приложением.

person cpilko    schedule 17.01.2013