Как проверить двух пользователей, которые являются друзьями на Facebook

Я работаю над мобильным приложением на основе facebook. Приложение создает локального пользователя с помощью входа в facebook. Шаги применения ниже.

  1. Войти с Facebook
  2. Базовая служба Создать локального пользователя
  3. Найдите друзей, которые используют приложение Facebook SDK
  4. Голосуй за друзей

Примечания:

  1. Я не хочу держать друзей пользователей в своей системе баз данных
  2. Я использую JWT

Проблема:

Я должен убедиться, что аутентифицированный пользователь и проголосовавший пользователь являются друзьями на Facebook. За пользователя должны проголосовать его друзья.

Я нашел пару решений, но у них тоже есть уязвимость.

Например;

Я прошел аутентификацию и получил всех своих друзей через facebook sdk. Запрос состоит в том, чтобы проголосовать за пользователя следующим образом: /vote/user_id/vote_id Серверная служба проверяет и проверяет токен jwt и голосует за пользователя, чей идентификатор user_id, как проголосовавшего за пользователя, прошедшего проверку подлинности.

table structure

from_user_id,vote_id,to_user_id 

Таким образом, проблема заключается в том, что когда пользователь аутентифицируется, он может голосовать за пользователя из приложения, не принимая токен jwt, независимо от того, является ли он его другом или нет. Это действительно большая проблема для нас. Поэтому мне интересно, как можно проверить, что два пользователя являются друзьями, не отправляя для этого запрос в facebook. Или как спроектировать архитектуру, чтобы избежать этой ситуации.


person RockOnGom    schedule 07.10.2015    source источник


Ответы (1)


Это можно просто сделать, отправив запрос на

/me/friends/{id_of_friend}

используя токен доступа текущего пользователя приложения. Если они друзья, вы вернете структуру data, содержащую идентификатор и имя друга — если они не друзья, data будет пустым массивом.

Для этого, конечно, требуется, чтобы оба пользователя предоставили вашему приложению разрешение user_friends.

person CBroe    schedule 08.10.2015
comment
Спасибо за ответ, но я имею в виду, что есть способ проверить, являются ли два пользователя его друзьями, не переходя к службам Facebook. - person RockOnGom; 10.10.2015
comment
Что вы имеете в виду, не делая запрос API? Ну, как вы сказали, вы не хотите хранить информацию на своей стороне — так что без запроса API, откуда еще вы ожидаете, что она будет поступать …? - person CBroe; 10.10.2015
comment
Да, без запроса API. Если я знаю ответ, то не спрашивал. Вопрос не только в проверке отношений между двумя пользователями, но и в архитектуре клиент-сервер. Я пытался найти решение, но не нашел. Так что я понятия не имею, где это происходит. - person RockOnGom; 10.10.2015
comment
Что ж, кто-то должен хранить эту информацию, если вы хотите запросить ее, не так ли? И если это не вы, остается только Facebook. И если оба варианта вас не устраивают, то ваш вопрос скорее о магии - person CBroe; 10.10.2015