yangusik/shikimori-api-php

Shikimori API 的 PHP 封装

v0.5.2 2022-08-17 14:02 UTC

This package is auto-updated.

Last update: 2024-09-17 18:42:34 UTC


README

🔌 Shikimori API 的 PHP 封装

Packagist build Coverage Status

这是一个为 http://shikimori.one API 编写的 PHP 封装。它包括以下功能

  • 所有 API 端点的辅助方法
  • 授权码。
  • 自动刷新访问令牌。
  • 自动重试速率限制请求。
  • PSR-4 自动加载支持。

要求

  • PHP 7.4 或更高版本。
  • PHP cURL 扩展(通常包含在 PHP 中)。
  • PHP Json 扩展(通常包含在 PHP 中)。

安装

使用 Composer 安装它

composer require yangusik/shikimori-api-php

使用方法

在使用 Shikimori API 之前,您需要在 Shikimori 应用 中创建一个应用。

简单示例:显示用户资料

require 'vendor/autoload.php';

$session = new ShikimoriAPI\Session(
    'CLIENT_ID',
    'CLIENT_SECRET',
    'REDIRECT_URI'
);

$api = new ShikimoriAPI\ShikimoriAPI(['auto_refresh' => false]);

if (isset($_GET['code'])) {
    $session->requestAccessToken($_GET['code']);
    
    // use session to make auto-refresh token auto_refresh = true
    $api->setSession($session);
    // or just a token if you don't need auto-refresh token 
    $api->setAccessToken($session->getAccessToken());

    print_r($api->whoami());
} else {
    $options = [
        'scope' => [
            'user-read-email',
        ],
    ];

    header('Location: ' . $session->getAuthorizeUrl($options));
    die();
}

某些资源不需要令牌,例如动画

require 'vendor/autoload.php';

$animes = new \ShikimoriAPI\Resources\Animes();

$animeList = $animes->getAll([['order' => 'popularity', 'status' => 'latest', 'limit' => 50]]);

print_r($animeList); 
/** 
 * [
 *  ["id" => 1069,
 *  "name" => "Chou Denji Machine Voltes V",
 *  "russian" => "Суперэлектромагнитная машина Вольтес V",
 *  "image": { ...

getAll 的所有选项请参阅 Shikimori 文档

如果资源需要令牌,例如对话框

require 'vendor/autoload.php';

$api = new \ShikimoriAPI\ShikimoriAPI();
$api->setAccessToken('TOKEN');

$dialog = new \ShikimoriAPI\Resources\Dialogs($api);
print_r($dialog->getAll());

// or 

$session = new ShikimoriAPI\Session(
    'CLIENT_ID',
    'CLIENT_SECRET',
    'REDIRECT_URI'
);
$session->setAccessToken('TOKEN');
$session->setRefreshToken('TOKEN');

$api = new ShikimoriAPI\ShikimoriAPI(['auto_refresh' => true]);
$api->setSession($session);

$dialog = new \ShikimoriAPI\Resources\Dialogs($api);
print_r($dialog->getAll());

有关更多说明和示例,请参阅 文档。(即将推出)

许可证

MIT 许可证。更多信息请参阅 LICENSE