如何用PRAW验证登录凭证有效性?附待完善Reddit机器人代码
验证Reddit登录凭证有效性的解决方案
嘿,我懂你现在的困惑——你想判断用PRAW创建的Reddit实例是否使用了有效登录凭证,但不知道怎么写判断条件对吧?直接用if reddit == ...肯定行不通,因为哪怕凭证错误,这个reddit对象也会被创建出来,只是没法正常执行需要登录权限的操作。
正确的验证思路
验证登录有效性的核心方法是尝试执行一个必须登录才能完成的API操作,然后捕获操作失败时抛出的异常。比如尝试获取当前登录用户的个人信息,如果凭证无效,PRAW会抛出对应的异常,我们就可以基于这个来判断。
修改后的完整代码
import praw import pandas as pd import datetime as dt from praw.exceptions import RedditAPIException, ClientException username = input("Your user name:\n") password = input("Your Password:\n") reddit = praw.Reddit(client_id='xxxxxxxxxxxxx', client_secret='xxxxxxxxxxxxxxxxxxxxxxxx', user_agent='Fetch', username=username, password=password) try: # 尝试获取当前登录用户信息,验证凭证有效性 reddit.user.me() # 凭证有效时,执行获取随机帖子逻辑 submission = reddit.subreddit("gtaonline").random() print(submission.url) except (RedditAPIException, ClientException) as e: # 捕获登录失败相关异常,提示用户并退出 print("Enter valid credentials") quit()
代码说明
- 我们导入了PRAW的专属异常类,能精准捕获登录失败、API调用出错等情况
reddit.user.me()这个调用必须依赖有效登录凭证才能成功返回用户对象,一旦凭证错误、client_id/secret配置有误,或者账号出现限流,都会触发异常- 把获取随机帖子的逻辑放在
try块内,确保只有登录验证通过后才会执行 - 异常处理块负责捕获登录失败的情况,提示用户输入有效凭证并退出程序
内容的提问来源于stack exchange,提问作者Celverboy
相关产品推荐
相关产品推荐

