Я администратор небольшой группы на Facebook, у нее около 40-50 членов. Теперь я создаю веб-страницу для группы, которая будет разрешать пользователям использовать Facebook Login (я использую Laravel + SammyK's LaravelFacebookSDK, если это имеет значение).
Все работает нормально, есть проблема. Я хотел бы ограничить логин только тем, кто является членом группы Facebook. Лучший способ – использовать API / me / groups, но для этого требуется разрешение user_groups
, которое ограничено.
Конечно, есть «хакерские» решения, например, каждый пользователь вручную вводит пользователя App Insight или записывает скрипт, который каждый день обновляет базу данных на моем сервере, которая содержит список членов группы, но нет простого и элегантного способа сделать это?
Я очень сомневаюсь, что Facebook позволит мне использовать для этого имя user_groups
.
Ну, API-интерфейс графика предоставляет эту функциональность, как вы сказали, вам просто нужно разрешение пользователя, а не facebooks. Поскольку вы могли бы сообщить о необходимости и преимуществах этого разрешения, вам просто нужно записать его, где-то рядом с вашей регистрацией / логином. Затем вам нужно указать 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);
Я не тестировал этот код, поскольку у меня нет установки под рукой, но из всего, что я только что прочитал, так оно и должно работать.
Edit: почти забыл, вы получите данные из своего объекта Facebook, используя следующие обозначения:
$groups = $fqb->object('me/groups')->get();
Похоже, есть только один хороший способ добиться этого:
Хотя /me/groups
требует прав пользователя_групп для извлечения групп, членом которых является пользователь, он может возвращать группы, созданные приложением без него (при условии, что у них есть действительный токен доступа).
Таким образом, хотя это явно не так хорошо и плавно, как я хотел, это мое решение заключалось в создании новой группы Facebook с использованием приложения (требуется только запрос POST) и перенос текущих членов в новый.
Изменить : перемещение участников не является возможным, присоединение к группе приложений возможно только с программным использованием SDK. Поэтому, когда пользователь не является членом этой группы, я попрошу их присоединиться. Это означает, что все могут присоединиться, и я должен вручную запретить те, которые мне не нравятся, вместо того, чтобы вручную разрешать те, кого я хочу, но, учитывая низкую гласность, я могу справиться с этим.
Да, это довольно «весело» для реализации. Я помню, что смог это сделать, но у меня нет какого-либо конкретного кода, чтобы помочь, к сожалению. Могу сказать, что для этого потребуется несколько токенов.
Если я правильно помню, это логический поток:
Получите собственный токен пользователя.
Затем маркер группы использует токен пользователя.
И тогда вы будете контролировать данные, которые человек может отправить в группу из вашего приложения.