cjrasmussen / bluesky-api
与Bluesky API/AT协议交互的简单辅助工具
2.1.3
2024-09-25 04:24 UTC
Requires
- php: >=7.4
- ext-curl: *
- ext-json: *
README
用于向Bluesky API/AT协议发送请求的简单类。与Bluesky无关联。
用法
开始会话
开始会话需要一个句柄和密码。
use cjrasmussen\BlueskyApi\BlueskyApi; $bluesky = new BlueskyApi(); try { $bluesky->auth($handle, $app_password); } catch (Exception $e) { // TODO: Handle the exception however you want }
获取刷新令牌
如果你因为反复创建会话而遇到速率限制,你可能想要缓存一个刷新令牌,并使用它来刷新会话而不是启动一个新的会话。你可以按自己的方式缓存它以供以后使用,或者查看下面的会话助手。
$refresh_token = $bluesky->getRefreshToken();
刷新会话
你可以稍后使用缓存的刷新令牌来刷新会话,而不是启动一个新的会话。
try { $bluesky->auth($refresh_token); } catch (Exception $e) { // TODO: Handle the exception however you want }
发送消息
$args = [ 'collection' => 'app.bsky.feed.post', 'repo' => $bluesky->getAccountDid(), 'record' => [ 'text' => 'Testing #TestingInProduction', 'langs' => ['en'], 'createdAt' => date('c'), '$type' => 'app.bsky.feed.post', ], ]; $data = $bluesky->request('POST', 'com.atproto.repo.createRecord', $args);
发送带有附件图像的消息
这假设你的图像文件是PNG格式
$body = file_get_contents($file); $response = $bluesky->request('POST', 'com.atproto.repo.uploadBlob', [], $body, 'image/png'); $image = $response->blob; $args = [ 'collection' => 'app.bsky.feed.post', 'repo' => $bluesky->getAccountDid(), 'record' => [ 'text' => 'Testing with an image #TestingInProduction', 'langs' => ['en'], 'createdAt' => date('c'), '$type' => 'app.bsky.feed.post', 'embed' => [ '$type' => 'app.bsky.embed.images', 'images' => [ [ 'alt' => 'A test image', 'image' => $image, ], ], ], ], ]; $response = $bluesky->request('POST', 'com.atproto.repo.createRecord', $args);
使用会话助手管理刷新令牌缓存
如上所述,你可以按自己的方式手动缓存会话刷新令牌。BlueskyApiSessionHelper::auth方法是这样做的一种方式。提供包含刷新令牌的文件的路径,该方法将刷新你的会话并使用新的刷新令牌更新缓存文件。可选地提供句柄和(应用)密码,以便在刷新令牌失败时创建新的会话。
use cjrasmussen\BlueskyApi\BlueskyApi; use cjrasmussen\BlueskyApi\BlueskyApiSessionHelper; $blueskyApi = new BlueskyApi(); $blueskyApiSessionHelper = new BlueskyApiSessionHelper($blueskyApi); try { $blueskyApiSessionHelper->auth($refresh_token_path, $handle, $password); } catch (Exception $e) { // TODO: Handle the exception however you want }
获取API请求的响应头信息
Bluesky在每个API请求响应的头部返回有关速率限制的数据。最新的请求响应头可以通过以下方式作为多维数组访问
$blueskyApi->getLastResponseHeader();
安装
如果你使用Composer来管理项目的依赖项,只需在composer.json文件中添加对cjrasmussen/bluesky-api的依赖即可。
composer require cjrasmussen/bluesky-api
尽管建议使用Composer,但你实际上可以按任何方式包含文件。
进一步参考
在我的博客上有一些与Bluesky API相关的资料。此外,还有一个针对Bluesky API用户的非官方Discord服务器,其中有一个PHP相关的频道。
许可
BlueskyApi遵循MIT许可协议。