Приложение для автопостинга содержимого со ссылкой в социальные сети. Приложение реализовано на Django 4.1. На данный момент реализован автопостинг в ВКонтакте, Одноклассники и телеграм. Автопостинг на уровне архитектуры реализован с помощью класса "Маркетолог" cms.promoters.Marketer. Маркетолог передаёт продвигателям (promoters) статью для продвижения.
- Создаём приложение
- Следуем инструкциям по ссылке выше.
- Создаём приложение.
- Выбираем тип приложения "Пользовательское".
- Ставим галочку "Пользовательское"
- Заполняем описание.
- Нажимаем "Добавить платформу".
- Выбираем OAuth.
- В списке разрешённых redirect_uri указываем URL вашего сайта, откуда будете производить кросспостинг, например, https://mirocod.ru
- Ставим галочку "Разрешить клиентскую OAuth авторизацию".
- Выставляем права:
- Доступ к личной информации через OAuth (VALUABLE_ACCESS): Опционально
- Получение длинных токенов OAuth (LONG_ACCESS_TOKEN): Опционально
- Установка статуса (SET_STATUS): Не используется
- Изменение фотографий и фотоальбомов (PHOTO_CONTENT): Не используется
- Управление группами (GROUP_CONTENT): Обязательно
- Нажмите "Сохранить".
- Вам на почту придут ключи.
- Нажмите на кнопку "Получить новый" рядом с надписью "Вечный access_token".
- Скопируйте значение "Вечный access_token" в .env-файл в корне вашего приложения, в качестве значения OK_ACCESS_TOKEN:
- Вставьте их в .env-файл в корне вашего приложения:
- Публичный ключ приложения - в качестве значения OK_APPLICATION_KEY
- Секретный ключ приложения - в качестве значения OK_APPLICATION_SECRET_KEY
- Создайте приложение в ВК (standalone). Укажите в приложении сообщество
- Скопируйте ссылку ниже, укажите ID приложения.Вставьте ссылку в адресную строку браузере, нажмите Enter https://oauth.vk.com/authorize?client_id=ID-приложения&scope=wall,offline&redirect_uri=https://oauth.vk.com/blank.html&display=page&response_type=token&revoke=1
- После этого в вашей адресной строке появится необходимый ключ. Он копируется вручную: после access_token= и перед &expires_in.
- Укажите токен, в качестве значения VK_TOKIN
- Укажите id сообщества со знаком «-», в качестве значения VK_OWNER_ID
- Создайте бота с помощью @BotFather в телеграм. Для этого укажите команду /newbot и нажмите Enter.
- Следуйте инструкциям.
- В конце BotFather выдаст вам опознак (token).
- Вставьте опознак в .env-файл вашего проекта, в качестве значения переменной TELEGRAM_BOT_TOKEN.
- Добавьте бота в админы группы
- Добавьте несколько тестовых сообщений в группу
- Запустите команду:
python3.8 manage.py get_telegram_group_id
- В результате будет выведен ид канала
- Вставьте полученный ид в .env-файл, переменная TELEGRAM_CHAT_ID
- Если будет ошибка, что "Нет обновлений", значит, нужно прислать больше сообщений в группу и быстрее запустить команду. Возможно бот успевает прочитать обновления до вас.
- Зайдите по ssh на хостинг.
- Зайдите по root.
- Активируйте виртуальное окружение:
source /home/crossposting_env/bin/activate
- Перейдите в папку проекта:
cd /var/www/crossposting/backend/current/
- Запустите консоль django:
python3.8 manage.py shell
- Выполните команду на python:
from django.contrib.auth.models import User
- Создайте пользователя, под которым будете авторизоваться. Укажите своё имя пользователя, электропочту и пароль:
user = User.objects.create_user(username='user', email='[email protected]', password='123123123')
- Выйти из консоли:
quit()
- По умолчанию настройка шифрования в crossposting_backend/private/settings.py ENV_ENCODED равна False. Это означает, что .env-файл не шифрован.
- Если нужно повысить защищённость данных, то шифруем .env-файл.
- Если у вас уже зашифрован .env-файл, то на всякий случай создайте резервную копию этого файла.
- Далее создайте .env-файл и укажите незашифрованные доступы к социальным сетям.
- В crossposting_backend/private/settings.py значение ENV_ENCODED д.б. False.
- Перезапустите веб-приложение:
supervisorctl restart crossposting_django
- Выполните команду для шифровки: python3.8 manage.py encode_file
- В результате будет создан файл .env.encoded
- Замените .env созданным файлом .env.encoded
- В crossposting_backend/private/settings.py значение ENV_ENCODED замените на True.
- Перезапустите веб-приложение:
supervisorctl restart crossposting_django