Подход, который работает в 2019 году
Недавно я пытался добиться чего-то похожего (к примеру использования, описанному в этой ветке), но я хотел убедиться, что соблюдаю текущую политику Facebook, поэтому я провел небольшое исследование и делюсь тем, что нашел.
Мой вариант использования
Итак, как я уже сказал, мой вариант использования очень похож на описанный здесь; то есть:
- Я делаю некоторую работу для школьного округа.
- Они используют программный инструмент для управления практически всем, что касается школьного транспорта.
- Этот инструмент позволяет им отправлять уведомления по электронной почте (подписчикам), когда они публикуют предупреждения о задержках автобусов и закрытии школ.
- Многие люди в сообществе следят за организацией на своей странице в Facebook, и это единственное место, где они ищут эти предупреждения.
- Таким образом, сотрудник организации должен вручную публиковать каждое уведомление на странице Facebook (помимо создания в транспортном ПО). Более того, эти уведомления в конечном итоге истекают (или просто удаляются до истечения срока их действия), поэтому сотрудник должен вернуться позже, чтобы удалить их вручную.
- Это небольшая часть времени, поэтому мы пытаемся разработать простую систему, которая периодически опрашивает базу данных программного инструмента на предмет новых (и просроченных) уведомлений и обновляет их (т.е. добавляет и удаляет) на странице Facebook.
На мой взгляд, это законный вариант использования, но я не знал, как реализовать его в соответствии с политиками Facebook.
Принятый ответ
Я выполнил шаги принятого ответа, и он сработал, за исключением того, что, похоже, все изменилось: теперь, даже если срок access to data
действия сгенерированного токена страницы не истекает, он истекает примерно через 60 дней. Вы также увидите это, если выполните процедуру и проверите токен страницы в FB Token Debugger Tool .
Кроме того, тот факт, что сгенерированные токены страницы привязаны к учетной записи пользователя, также прискорбен, потому что, если пользователь обновляет свой пароль, токен страницы также становится недействительным.
Как это сделать в 2019 году
После нескольких часов исследования я наткнулся на следующую статью документации Facebook: Business Login for Direct Business .
Оказывается, теперь можно, следуя шагам, описанным в приведенной выше статье, сгенерировать токен страницы, который не связан с какой-либо конкретной учетной записью пользователя Facebook и срок действия которого не истечет (если только приложение FB не будет удалено или базовый токен приложения удаляется, понимаете ...)
Итак, вот шаги и самые важные части:
- Вам нужен аккаунт Бизнес-менеджера .
- Требуется проверка и подписание цифрового контракта.
- Вам необходимо добавить в эту учетную запись целевую страницу Facebook.
- Вам необходимо создать приложение Facebook и перенести это приложение в ту же учетную запись Business Manager.
- Приложение должно будет пройти процесс проверки Facebook, потому что потребуются следующие разрешения:
manage_pages
и publish_pages
.
- Важное примечание Для того, чтобы сообщения, сделанные с использованием токена создания страницы, были видны пользователям, кроме администраторов приложения, это приложение должно быть опубликовано и одобрено.
- Вы по-прежнему можете экспериментировать с концепцией, не отправляя на рассмотрение, но сообщения не будут общедоступными.
- В учетной записи Business Manager (только после того, как ваше приложение и страница были добавлены в учетную запись), вам необходимо создать так называемого системного пользователя и предоставить этому пользователю роль администратора (или разрешения) для целевой страницы Facebook.
- Системный пользователь принадлежит учетной записи Business Manager и не привязан к конкретному пользователю. На данный момент я понимаю, что одним из основных вариантов использования для системного пользователя является программный доступ к Facebook Graph API (как раз то, что нам нужно).
- Затем для этого пользователя системы вам необходимо сгенерировать токен доступа (срок действия которого не истекает). Вам будет предложено выбрать, для какого приложения. Затем вы выберете свое целевое приложение.
- Затем вам нужно будет использовать сгенерированный токен приложения для создания токена страницы, который также будет бессрочным. Процедура описана в этой статье как:
GET /<PAGE_ID>?fields=access_token&access_token=<SYSTEM_USER_ACCESS_TOKEN>
Срок действия этого токена никогда не истечет, и он не будет привязан к конкретному пользователю Facebook, так что это именно то, что нам нужно!
Последняя часть - убедиться, что ваше приложение Facebook одобрено Facebook. Фактически, это самая важная часть, потому что вся процедура бесполезна, если люди не видят наши сообщения.
Я хотел знать наверняка, что могу положиться на описанную выше процедуру, чтобы создать что-то для моего клиента без отклонения Facebook в конце, поэтому заранее (т.е. перед тем, как начать работу над проектом моего клиента), я прошел весь процесс создание страницы, приложения, учетной записи Business Manager и т. д. Я подтвердил свой бизнес. Я отправил свое приложение на проверку. В моем запросе я очень конкретизировал свой вариант использования и подчеркнул, что приложение предназначено для «самостоятельного использования» (т. Е. Что организация разрабатывает приложение для себя, а не для других пользователей Facebook). Я получил одобрение менее чем за 24 часа.
Еще несколько примечаний о процессе проверки приложения:
- Мне нужно было выбрать платформу для приложения, поэтому я выбрал веб-сайт .
- Я должен был указать, зачем приложению нужны эти два разрешения и как оно будет их использовать.
- Я должен был указать, почему рецензент не сможет войти в мое приложение и попробовать его (то есть потому, что приложение будет использоваться рабочим процессом).
- Для обязательных скринкастов я просто представил ручные операции в терминале с помощью
curl
утилиты (для генерации токена страницы и публикации сообщений на странице Facebook). Я также показал, как использую Business Manager, чтобы связать системного пользователя со страницей, создать токен и так далее.
- Опять же, я очень конкретизировал свой вариант использования, и я думаю, что это помогло.
Надеюсь, эта информация будет полезна людям с похожими вариантами использования.