From 42b06474113c21dac6eb4d9b1e1a1b00648fbb81 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=90=D0=BB=D0=B5=D0=BA=D1=81=D0=B5=D0=B9=20=D0=91=D0=B5?= =?UTF-8?q?=D0=B7=D0=B1=D0=BE=D1=80=D0=BE=D0=B4=D0=BE=D0=B2?= Date: Thu, 10 Aug 2023 11:02:50 +0000 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B8=D0=BB(?= =?UTF-8?q?=D0=B0)=20=D0=BD=D0=B0=20'Home'?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- Home.md | 136 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) diff --git a/Home.md b/Home.md index fe782dd..7a7ac04 100644 --- a/Home.md +++ b/Home.md @@ -1,5 +1,141 @@ ![](https://pulsdel.ru/MIROCOD/CrossPosting/raw/branch/master/LogoWhiteSmall.png) # КроссПостинг (CrossPosting) +----- +# Описание + +Приложение для автопостинга содержимого со ссылкой в социальные сети. +Приложение реализовано на Django 4.1. +На данный момент реализован автопостинг в ВКонтакте, Одноклассники и телеграм. +Автопостинг на уровне архитектуры реализован с помощью класса "Маркетолог" cms.promoters.Marketer. +Маркетолог передаёт продвигателям (promoters) статью для продвижения. + +# Настраиваем доступ к социальным сетям + +## Настраиваем доступ к одноклассникам + +1. Создаём [приложение](https://apiok.ru/dev/app/create) +2. Следуем инструкциям по ссылке выше. +3. Создаём приложение. +4. Выбираем тип приложения "Пользовательское". +5. Ставим галочку "Пользовательское" +6. Заполняем описание. +7. Нажимаем "Добавить платформу". +8. Выбираем OAuth. +9. В списке разрешённых redirect_uri указываем URL вашего сайта, откуда будете производить кросспостинг, + например, https://mirocod.ru +10. Ставим галочку "Разрешить клиентскую OAuth авторизацию". +11. Выставляем права: + +* Доступ к личной информации через OAuth (VALUABLE_ACCESS): Опционально +* Получение длинных токенов OAuth (LONG_ACCESS_TOKEN): Опционально +* Установка статуса (SET_STATUS): Не используется +* Изменение фотографий и фотоальбомов (PHOTO_CONTENT): Не используется +* Управление группами (GROUP_CONTENT): Обязательно + +11. Нажмите "Сохранить". +12. Вам на почту придут ключи. +13. Нажмите на кнопку "Получить новый" рядом с надписью "Вечный access_token". +14. Скопируйте значение "Вечный access_token" в .env-файл в корне вашего приложения, в качестве значения OK_ACCESS_TOKEN: +15. Вставьте их в .env-файл в корне вашего приложения: + +* Публичный ключ приложения - в качестве значения OK_APPLICATION_KEY +* Секретный ключ приложения - в качестве значения OK_APPLICATION_SECRET_KEY + +## Настраиваем доступ к ВКонтакте + +1. Создайте приложение в ВК (standalone). Укажите в приложении сообщество +2. Скопируйте ссылку ниже, укажите 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 +3. После этого в вашей адресной строке появится необходимый ключ. Он копируется вручную: после access\_token= и перед &expires\_in. +4. Укажите токен, в качестве значения VK_TOKIN +5. Укажите id сообщества со знаком «-», в качестве значения VK_OWNER_ID + +## Настраиваем доступ к телеграм + +1. Создайте бота с помощью @BotFather в телеграм. Для этого укажите команду /newbot и нажмите Enter. +2. Следуйте инструкциям. +3. В конце BotFather выдаст вам опознак (token). +4. Вставьте опознак в .env-файл вашего проекта, в качестве значения переменной TELEGRAM_BOT_TOKEN. +5. Добавьте бота в админы группы +6. Добавьте несколько тестовых сообщений в группу +7. Запустите команду: + +``` +python3.8 manage.py get_telegram_group_id +``` + +6. В результате будет выведен ид канала +7. Вставьте полученный ид в .env-файл, переменная TELEGRAM_CHAT_ID + +### Возможные ошибки + +7. Если будет ошибка, что "Нет обновлений", значит, нужно прислать больше сообщений в группу и быстрее запустить команду. + Возможно бот успевает прочитать обновления до вас. + +# Задаём доступ к веб-интерфейсу + +1. Зайдите по ssh на хостинг. +2. Зайдите по root. +3. Активируйте виртуальное окружение: + +```shell +source /home/crossposting_env/bin/activate +``` + +4. Перейдите в папку проекта: + +```shell +cd /var/www/crossposting/backend/current/ +``` + +5. Запустите консоль django: + +```shell +python3.8 manage.py shell +``` + +1. Выполните команду на python: + +```python +from django.contrib.auth.models import User +``` + +2. Создайте пользователя, под которым будете авторизоваться. Укажите своё имя пользователя, электропочту и пароль: + +```python +user = User.objects.create_user(username='user', email='user@mail.pro', password='123123123') +``` + +3. Выйти из консоли: + +```python +quit() +``` + +# Шифруем .env-файл + +1. По умолчанию настройка шифрования в crossposting_backend/private/settings.py ENV_ENCODED равна False. Это означает, + что .env-файл не шифрован. +2. Если нужно повысить защищённость данных, то шифруем .env-файл. +3. Если у вас уже зашифрован .env-файл, то на всякий случай создайте резервную копию этого файла. +4. Далее создайте .env-файл и укажите незашифрованные доступы к социальным сетям. +5. В crossposting_backend/private/settings.py значение ENV_ENCODED д.б. False. +6. Перезапустите веб-приложение: + +```shell +supervisorctl restart crossposting_django +``` + +7. Выполните команду для шифровки: + python3.8 manage.py encode_file +8. В результате будет создан файл .env.encoded +9. Замените .env созданным файлом .env.encoded +10. В crossposting_backend/private/settings.py значение ENV_ENCODED замените на True. +11. Перезапустите веб-приложение: + +```shell +supervisorctl restart crossposting_django +```