Интеграция python-развязки с PRAW? - PullRequest
0 голосов
/ 19 сентября 2019

Я пытался выяснить, могу ли я использовать python-decouple, чтобы разместить свои учетные данные бота в отдельном файле .env.

Метод проверки подлинности в основном прямо из документа praw:

    reddit = praw.Reddit(
        client_id=config('CLIENT_ID'),
        client_secret=config('CLIENT_SECRET'),
        password=config('PASSWORD'),
        user_agent=config('USER_AGENT'),        
        username=config('USERNAME')
    )

Тем не менее, всякий раз, когда я пытаюсь это сделать, он возвращает ошибку аутентификации 403.Я возвращаюсь, заменяя конфиги развязки строками реальных деталей, но, похоже, это не выполняется, и возникающие ошибки кажутся случайными в зависимости от того, что и когда я вынимаю.

Это проблема с тем, как функционирует развязка?

Спасибо.

1 Ответ

0 голосов
/ 24 сентября 2019

Я пытался выяснить, могу ли я использовать python-decouple, чтобы поместить свои учетные данные бота в отдельный файл .env.

Почему бы не использовать файл praw.ini?Это задокументировано здесь в документации PRAW.Это формат для хранения учетных данных Reddit в отдельном файле от вашего кода.Например, файл praw.ini может выглядеть следующим образом:

[bot1]
client_id=Y4PJOclpDQy3xZ
client_secret=UkGLTe6oqsMk5nHCJTHLrwgvHpr
password=pni9ubeht4wd50gk
username=fakebot1

[bot2]
client_id=6abrJJdcIqbclb
client_secret=Kcn6Bj8CClyu4FjVO77MYlTynfj
password=mi1ky2qzpiq8s59j
username=fakebot2

Затем вы используете в своем коде определенные учетные данные, например:

import praw

reddit = praw.Reddit('bot2', user_agent='myBot v0.1')
print('Logged in as', reddit.user.me())

Я думаю, что это лучшее решение для работыс учетными данными PRAW.


Однако, если вы действительно хотите сделать это с python-decouple, вот рабочий пример:

Содержимое файла .env:

username=k8IA
password=REDACTED
client_id=REDACTED
client_secret=REDACTED

Содержимое файла connect.py:

import praw

from decouple import config

reddit = praw.Reddit(username=config('username'),
        password=config('password'),
        client_id=config('client_id'),
        client_secret=config('client_secret'),
        user_agent='myBot v0.1')

print('Logged in as', reddit.user.me())

Вывод при работе python3 connect.py:

Logged in as k8IA
...