# Описание Приложение для автопостинга содержимого со ссылкой в социальные сети. Приложение реализовано на 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 ```