Я администратор небольшой группы в Facebook, в ней около 40-50 участников. Сейчас я создаю веб-страницу для группы, которая авторизует пользователей с помощью входа в Facebook (я использую Laravel + SammyK’s LaravelFacebookSDK если это имеет значение).
Все работает нормально, но есть проблема. Я хотел бы ограничить вход только для тех, кто является членами группы Facebook. Лучший способ — использовать API / me / groups, но для этого требуется user_groups
разрешение, которое ограничено.
Конечно, есть «хакерские» решения, такие как создание каждого пользователя вручную для пользователя App Insight или написание сценария, который обновляет базу данных на моем сервере каждый день, которая содержит список членов группы, но не существует простого, элегантного способа сделать это?
Я очень сомневаюсь, что Facebook позволит мне использовать user_groups
разрешение только для этого.
Как вы уже сказали, графический API предоставляет такую функциональность, вам просто нужно разрешение пользователя, а не Facebook. Поскольку вы можете сообщить о необходимости и преимуществах этого разрешения, вам просто нужно будет записать его где-то рядом с вашей регистрацией / логином. Затем вам нужно указать user_groups внутри переменной области видимости, которую вы отправляете с помощью метода getLoginUrl.
$scope = ['email', 'user_status', 'user_groups']; // it is 'groups' or 'user_groups'
$login_url = $fqb->auth()->getLoginUrl('http://my-callback/url', $scope);
Я не тестировал этот код, так как у меня нет установки под рукой, но из всего, что я только что прочитал, вот как это должен Работа.
Изменить: Почти забыл, вы бы получить данные из вашего объекта Facebook, используя следующую запись:
$groups = $fqb->object('me/groups')->get();
Похоже, есть только один хороший способ добиться этого:
Хотя /me/groups
требует user_groups
разрешение на получение групп, членом которых является пользователь, оно может возвращать группы созданный приложением без него (конечно, если есть действительный токен доступа).
Так что, хотя это явно не так красиво и гладко, как хотелось бы, мое решение состояло в том, чтобы создать новую группу Facebook с помощью приложения (требуется только запрос POST) и переместить текущих участников в этот новый.
редактироватьперемещение участников не представляется возможным, присоединение к группе приложений возможно только программно с использованием SDK. Поэтому, когда пользователь не является членом этой группы, я предложу ему присоединиться. Это означает, что каждый может присоединиться, и я должен вручную запретить те, которые мне не нравятся, вместо того, чтобы вручную разрешать те, которые я хочу, но с учетом низкой гласности я могу с этим справиться.
Да, это довольно «весело» для реализации. Я помню, что смог сделать это, но у меня нет конкретного кода, чтобы помочь, к сожалению. Я могу вам сказать, что для этого потребуется несколько токенов.
Если я правильно помню, это логический поток:
Получить собственный токен пользователя.
Затем токен группы, используя токен пользователя.
И тогда вы будете контролировать данные, которые человеку разрешено отправлять в группу из вашего приложения.