Сейчас ваша корзина пуста!
Как в n8n со «скрипом» настраивается автопостинг в Facebook

«Скрип», то есть проблема при нстройке публикации в фейсбуке, она возникла у меня. Потому что надо всё делать правильно, а в интернете полной инфы нет. Собирал информацию методом тыка, чтобы в итоге заработало как надо и я прошёл сложный путь настройки публикации контента в FB и Insta через APIИ как же просто у других сервисов!!! Есть хорошо зарекомендовавший себя подход для работы с API — это получение API-ключа в админке сервиса. Особенно круто, если можно задать дату или период, до которого он актуален.
Openai, вариант «нормально»:

Mistral — как раз у него особенно круто:

А вот у Фейсбука не все так просто — там нужно токен обновлять, он действует определённый период времени. Да, тот же Сбер Гига чат пошёл «куда дальше», его токен действует 30 минут, а у Фейсбука — 60 дней.
Однако неважно сколько действует токен. Важно, что в связи с этим необходимо реализовать процедуру, в которой:
- а) токен хранится в «постоянной» памяти
- б) токен можно получить по запросу
- в) токен можно обновить по расписанию
Тут хоть 30 минут, хоть 60 дней — схема работы одна и та же.
Поэтому, действуя по плану, реализовал сначала долговременную память для хранения токенов. Лучший вариант для n8n это база данных MySQL, её поддержка уже встроена в n8n и все замечательно работает:

Этот первоначальный вариант (на скриншоте выше) потом трансформировался в случай, когда поле token_type стало обозначать не тип токена — бессмысленный параметр, а ЧТО за ТОКЕН, к какой странице относится. И можно в одну базу писать любое их количество.
А затем подвернулся случай у клиента. Токенов полно, а хостинга нет, и чтобы было дешевле, подумал о развертывании на VPS с n8n не MySQL, которая наверное сразу гиг ОЗУ съест, а о SQLITE. Что и было с успехом реализовано:

Вот табличка в sqlite:
-- Создание таблицы tokens
CREATE TABLE tokens (
id INTEGER PRIMARY KEY AUTOINCREMENT,
access_token TEXT NOT NULL,
token_type TEXT NOT NULL,
expires_in INTEGER NOT NULL,
tm TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);
-- Триггер для автоматического обновления поля tm при UPDATE
CREATE TRIGGER update_tokens_tm
AFTER UPDATE ON tokens
FOR EACH ROW
BEGIN
UPDATE tokens SET tm = CURRENT_TIMESTAMP WHERE id = OLD.id;
END;
CREATE UNIQUE INDEX idx_tokens_token_type ON tokens(token_type);
Другой вопрос это как работать с sqlite из n8n? Решение очень простое, в виде скрипта на nodejs. Он работает как сервер, типа создает вебхуки для работы с токенами (чтение и запись/апдейт), это любой ChatGPT в пару секунд напишет и решит пункты из списка б) токен можно получить по запросу и в) токен можно обновить по расписанию
Основной «скрип», сложность — это сами токены, какие нужны права приложению. Всё тут завязывается на Фейсбук, и самое противное — это то, что если у вас неполные права к Meta Business Suit, которое объединяет страницы Fb Insta и сами приложения, через которые происходит публикация и для них выдаются токены…. то публикации видны только админам, а остальным — НЕТ.
Максимально просто это взять пароль у клиента к ФБ и все сделать. Либо вариант с ПОЛНЫМ ДОСТУПОМ аккаунту девелопера к Meta Business Suit, это необходимо!!! без полного доступа теряется смысл всей этой затеи.
Вот на этом также теряется масса времени, ведь ни ChatPGT ни интернет об этом не сообщают, или я просто не заметил 🙂
А так всё просто, создаем приложение и потом через него настраиваем получение токена:

В настройках приложения поставить домены приложений, я там указывал домен VPS и так как он третьего уровня, добавил ещё и второго уровня, бегетовский домен.
Получение токена, который нужен для осуществления публикаций, сопряжено с особенностями. Нужно в Graph API Explorer выбрать приложение, разрешения, и сгенерировать токен.



Вот как -то методом тыка была сгенерирована подобная комбинация из 11 элементов. И токен работает, правда его рекомендуется сразу обновить, чтобы получить токен на 60 дней. Ибо из Graph API получается короткоживущий токен, на пару часов.
Вот кто бы про это в интернете рассказал бы, мне сэкономил кучу времени!!!
Прокомментировать в Телеграм: https://t.me/n8nhow
Подписаться на канал обучения n8n: https://t.me/n8ncoaching
