cjrasmussen/bluesky-api

与Bluesky API/AT协议交互的简单辅助工具

2.1.3 2024-09-25 04:24 UTC

This package is auto-updated.

Last update: 2024-09-25 04:25:41 UTC


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许可协议。