0

我一直在尝试查看是否可以使用 python-decouple 将我的机器人凭据放在单独的 .env 文件中。

Auth 方法基本上就在 praw doc 之外:

    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 auth 错误。我回去工作,用实际细节的字符串替换解耦配置,但它似乎没有贯彻执行,并且发生的错误似乎是随机的,具体取决于我取出的内容和时间。

这是如何解耦功能的问题吗?

谢谢。

4

1 回答 1

0

我一直在尝试查看是否可以使用 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
于 2019-09-23T21:07:22.603 回答