Предположим, что приложение Facebook уже создано и опубликовано. У нас есть APP_ID и APP_SECRET. Чтобы это приложении могло что-то делать на фейсбуке нам понадобятся токены (маркеры доступа). У Facebook, как оказалось есть, как минимум два типа токенов.

Получение Пользовательский токена (маркер доступа, token ) Facebook

Пользовательский токен (маркер доступа), необходим для большинства операций, не связанных со страницей (Facebook Pages). В том числе для парсинга групп и юзеров, а также для публикации в группу. Для получения пользовательского токена в приложении на Yii2 нужно сначала установить Facebook Graph SDK.

!!! Важно !!! Пользовательский токен валиден в течении 60 дней. Потом он протухает и его нужно генерить вновь.

Через композер:


Затем в подходящий контроллер (в примере AzzraelController ) пишем примерно такой экшен:


В итоге, когда мы зайдем на https://azzrael.ru/yii2fake/azzrael/fb-token у нас будет редирект на Фейсбук, где у нас спросят разрешений, затем ФБ отредиректит на этот же урл, который выведен нужный пользовательский токен.

Так как на крон все это подвесить не получится (юзер же должен дать ФБ разрешения), то в продакшене, возможно, красиво выглядит письмо по крону со ссылкой, на получение токена. А в колбэке сохранение токена в базу. Ну как то так вообщем. Но в целом такой ограниченный токен мне не нравится. Может есть способ получить вечный токен на какого либо юзера? Напишите в комментах.

 Токен страницы

Для публикации в группу нужен пользовательский токен (см. выше). Для работы же со страницей Facebook Page нужен токен страницы. Его можно получить в Graph API Explorer.

Во многих источниках пишут что токен страницы вечный. Мне пока такого добиться не удалось. Токен страницы по умолчанию выдается на час (также как пользовательский в колбэке), а затем может быть заменен на пролонгированный до 60 дней.

Тут возможны два варианта с использованием пользовательского токена и через маркер приложения. Второй вариант проще. И если нам нужен только токен страницы, то весь этот огород с колбэками и городить не надо.

Идем в Graph API Explorer и делаем как на картинке:

Получение access token для Facebook Pages

Затем жмем на восклицательный знак рядом с полем токена. Переходим в отладчик и продляем токен. Тамже можно проверить на сколько выдан токен. Как сделать токен вечным мне выяснить пока не удалось.

Вроде все. Этих токенов достаточно для публикации и сбора данных через Facebook Graph API.

З.Ы.: Это заметки на полях. С Facebook API только разбираюсь на момент написания. Так что потом что-то может выглядеть смешно ;), как часто бывает.