我正在制作一个 reddit 机器人,可以回复特定评论。
但是我收到此错误:invalid_grant 错误处理请求
我找不到解决方案。
这是我的代码,我使用Python。
import praw
import time
import config
def login():
r = praw.Reddit(user_agent = "test bot",
username = config.username,
password = config.password,
client_id = config.client_id,
client_secret = config.client_secret)
print("logged in")
return r
cache = []
def run_bot(r):
subreddit = r.subreddit("Test")
comments = subreddit.get_comments(limit=25)
for comment in comments:
comment_text = comment.body.lower()
if "xD" in comment_text and comment.id not in cache:
comment.reply("xD")
cache.append(comment.id)
while True:
r = login()
run_bot(r)
time.sleep(5)
回溯:
logged in
Traceback (most recent call last):
File "xdbot.py", line 28, in <module>
run_bot(r)
File "xdbot.py", line 19, in run_bot
comments = subreddit.get_comments(limit=25)
File "D:\Programming\Phyton\lib\site-packages\praw\models\reddit\base.py", line 31, in __getattr__
self._fetch()
File "D:\Programming\Phyton\lib\site-packages\praw\models\reddit\base.py", line 66, in _fetch
params=self._info_params)
File "D:\Programming\Phyton\lib\site-packages\praw\reddit.py", line 367, in get
data = self.request('GET', path, params=params)
File "D:\Programming\Phyton\lib\site-packages\praw\reddit.py", line 451, in request
params=params)
File "D:\Programming\Phyton\lib\site-packages\prawcore\sessions.py", line 174, in request
params=params, url=url)
File "D:\Programming\Phyton\lib\site-packages\prawcore\sessions.py", line 108, in _request_with_retries
data, files, json, method, params, retries, url)
File "D:\Programming\Phyton\lib\site-packages\prawcore\sessions.py", line 93, in _make_request
params=params)
File "D:\Programming\Phyton\lib\site-packages\prawcore\rate_limit.py", line 32, in call
kwargs['headers'] = set_header_callback()
File "D:\Programming\Phyton\lib\site-packages\prawcore\sessions.py", line 134, in _set_header_callback
self._authorizer.refresh()
File "D:\Programming\Phyton\lib\site-packages\prawcore\auth.py", line 328, in refresh
password=self._password)
File "D:\Programming\Phyton\lib\site-packages\prawcore\auth.py", line 142, in _request_token
payload.get('error_description'))
prawcore.exceptions.OAuthException: invalid_grant error processing request
按照此说明所述仔细检查您的凭据。
请记住,用户名是 your reddit 的帐户名,而不是机器人的名称。
另一种可能性是您的机器人因登录尝试次数过多而超时。
检查此问题的简单方法是尝试手动登录 Reddit 并检查您是否被阻止。
您可能对此帐户使用双因素身份验证。 您必须禁用它,或者通过冒号分隔的一次搅拌传递 2FA 代码和密码,如下所示:
r = praw.Reddit(user_agent = "test bot",
username = config.username,
password = f"{config.password}:{2FA-Code}",
client_id = config.client_id,
client_secret = config.client_secret)
请参阅文档: https://praw.readthedocs.io/en/latest/getting_started/authentication.html#two-factor-authentication
我今天遇到了这个错误,原因是我使用我的 Reddit 帐户启用了双因素身份验证。
删除双因素身份验证使我的机器人/应用程序再次取得进步。
您也可以使用上面的建议来解决这个问题:https://stackoverflow.com/a/71905094/1465073
此外,您的代码将无法工作,因为您使用“lower”命令并且您比较的字符串中有一个大写字母。
如果您使用通过 OAuth 与第三方服务(“使用 Google 登录”或“使用 Apple 登录”)创建的 Reddit 帐户,有时似乎会弹出此错误。
您可能需要创建一个 Reddit 密码(与您的第 3 方服务分开)或完全断开这些服务。两者都可以在 Reddit 网站上完成这里。