cross-posting/README.md

113 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# Описание
Приложение для автопостинга содержимого со ссылкой в социальные сети.
Приложение реализовано на 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 указываем https://zakonvremeni.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. Укажите логин, ваш email, под которым вы авторизуетесь в ВК, в качестве значения VK_LOGIN
2. Укажите пароль, в качестве значения VK_PASSWORD
3. Укажите ид группы, добавьте к нему минус в начале. Т.е. если № группы 7002, то нужно указать -7002, в качестве значения 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
```