损坏 / Reddit
Reddit SDK for CodeIgniter 4
资助包维护!
tattersoftware
paypal.me/tatter
Requires
- php: ^7.4 || ^8.0
Requires (Dev)
- codeigniter4/framework: ^4.1
- tatter/tools: ^2.0
This package is auto-updated.
Last update: 2024-09-17 23:55:36 UTC
README
Reddit SDK for CodeIgniter 4
快速开始
- 使用Composer安装:
> composer require tatter/reddit
- 在 .env 中提供Reddit凭证
- 获取API结果
foreach (service('reddit')->fetch('new') as $thing)
{
echo (string) $thing; // "Comment" or "Link"
echo $thing->link_permalink; // E.g. "https://www.reddit.com/r/pythonforengineers/comments/jox9zy/great_video_for_the_python_programers"
}
描述
Reddit SDK 提供了一个用于Reddit API文档中描述的API端点的框架准备好的包装器。[Reddit API文档](https://www.reddit.com/dev/api)。
配置(可选)
可以通过扩展配置文件来改变库的默认行为。将 examples/Reddit.php 复制到 app/Config/,并按照注释中的说明操作。如果在 app/Config 中找不到配置文件,则库将使用其自己的。
凭证
此库需要有效的Reddit应用程序来获取与API一起工作的访问令牌。有关更多详细信息,请参阅 [Reddit OAuth2 wiki](https://github.com/reddit-archive/reddit/wiki/OAuth2)。
- 登录Reddit并访问“已授权的应用程序”页面([https://www.reddit.com/prefs/apps/](https://www.reddit.com/prefs/apps/))
- 在“开发中的应用程序”下选择“创建应用...”
- 选择“脚本”作为应用程序类型
- 在所需文本字段中提供名称、描述和URL
- 选择“创建应用”
一旦您的应用程序创建成功,您需要复制“客户端ID”和“密钥”(有关帮助,请参阅上面的wiki文章)。将这些信息以及您的用户名和密码添加到项目的 .env 文件中,例如
#--------------------------------------------------------------------
# REDDIT API
#--------------------------------------------------------------------
reddit.clientId = as98-asdn3h93r
reddit.clientSecret = LKhsa-ASJDn9a8sdion_laskdn0
reddit.username = MyFiRsTrEdItTbOt
reddit.password = ReallySecurePassword321
用法
访问客户端最简单的方式是通过CodeIgniter的服务
$reddit = service('reddit');
客户端将处理认证(假设您的凭证有效)、速率限制、响应过滤和格式化。通过链式访问客户端方法来设置请求,然后使用 fetch()
来启动它
$comments = $reddit->subreddit('catgifs')->limit(10)->fetch('comments');
对于更高级的需求,您可以使用 request($uri, $data, $query)
方法,该方法返回实际的 Response
对象,提供对头等的访问。请参阅 HTTP/RedditRequest.php 和 HTTP/RedditResponse.php,了解一些“底层”的API处理。
故障排除
如果发生错误,所有预期异常都包装在 Tatter\Reddit\Exceptions\RedditException
中,因此您可以捕获它们并找出发生了什么。
try
{
$comments = $reddit->subreddit('php')->fetch('new');
}
catch (\Tatter\Reddit\Exceptions\RedditException $e)
{
echo $e->getMessage(); // "API responded with an error: Invalid authorization"
}