ylorant / twitch-php-client
用于Twitch多个API的PHP客户端,易于扩展和嵌入。
Requires
- php: >=7.0.0
- ext-curl: *
- fakerphp/faker: ^1.19
- psr/log: ^1.0
Requires (Dev)
- league/climate: ^3.8
- monolog/monolog: ^1.23
- phpunit/php-code-coverage: ^9
- phpunit/phpunit: ^9
README
这个库是Twitch API的PHP客户端。它允许您使用或不用身份验证轻松地向Twitch发送请求,具有简单的设计,允许嵌入到服务中。它还尽可能减少PHP依赖项,只需安装cURL扩展,并依赖于psr/log
的LoggerInterface。
兼容性:PHP 7.0+
注意:这个库在API方面仍然相当不完整。这些功能将逐步添加。您仍然可以很容易地通过添加现有的端点或创建缺失的端点来添加功能。如果您想将其贡献回项目,只需发起一个pull request即可 :)
安装
使用composer
composer install ylorant/twitch-php-client
基本用法(使用Helix)
有关令牌提供程序和身份验证的更多信息,请参阅下一节。
<?php use TwitchClient\API\Kraken\Kraken; use TwitchClient\Authentication\DefaultTokenProvider; // Create a default token provider $tokenProvider = new DefaultTokenProvider('client_id', 'client_secret'); // Create the client for the specific API we want to query, here it's Kraken $helix = new Helix($tokenProvider); // Fetch info for an user, for example $userInfo = $helix->users->getUser('esamarathon');
身份验证:获取令牌
对于某些写操作,Twitch要求您使用与您要编辑的实体关联的访问令牌。为此,有一个API可供请求访问令牌,用于特定用户账户(使用您可能已经看到的“授权应用”页面)和多种身份验证工作流程。
此库提供了一种使用OAuth授权代码工作流程获取令牌的方法。以下是一个用于获取访问令牌的示例代码。您可以在文件tests/authentication.php
中看到另一个示例。
<?php use TwitchClient\API\Auth\Authentication; use TwitchClient\Authentication\DefaultTokenProvider; // Create the token provider using the client ID and secret. $tokenProvider = new DefaultTokenProvider('client_id', 'client_secret'); $redirectURI = 'https:///'; // The redirect URI configured in the app settings on Twitch. // Here we'll suppose that we're on a single page that handles both. $authAPI = new Authentication($tokenProvider); // If the call has a GET parameter named 'code', then we're on the redirect URI if (!empty($_GET['code'])) { // Getting the access token, the API requiring to send $accessToken = $authAPI->getAccessToken($_GET['code'], $redirectURI); var_dump($accessToken); // Dumping it for example } else { // Get an authorize URL with some scope (here the one to allow the app to change the stream title and game) $authorizeURL = $authAPI->getAuthorizeURL($redirectURI, ['channel_editor']); // Redirect the user to the authorize page header('Location: '. $authorizeURL); }
TokenProvider接口
Twitch API依赖于用户和应用程序身份验证来允许访问其API(OAuth2),因此为了解决这个问题,这个库使用一个简单的接口,称为TokenProvider(位于TwitchClient\Authentication\TokenProvider
)。此接口描述了库如何检索应用程序和用户身份验证。
您可以选择实现自己的令牌提供程序,通过创建一个实现TokenProvider
接口的对象来实现,如果您需要存储特定的用户令牌,或者如果您使用需要一次性设置令牌的更基本的工作流程,您可以使用DefaultTokenProvider
来实现客户端的标准令牌提供程序功能。然而,此默认提供程序只会将令牌保存到变量中,因此您不会有任何持久性。
令牌提供程序基于一个基本原理。您可以为定义的“目标”频道注册一组令牌。目标频道可以与创建令牌的频道不同。然后,当您调用需要一定访问级别的API方法时,库将尝试获取目标频道的令牌。如果令牌已过期,库将尝试刷新它。
当不需要目标频道时,有两种情况会发生以提供身份验证
- 您可以提供一个默认目标,这将使库默认使用与目标频道关联的令牌来调用所有未定义目标的调用。要使用它,只需在您的令牌提供程序上调用
setDefaultTarget
方法。 - 您可以设置一个默认令牌,它没有与任何频道关联(使用客户端凭据流)。这不需要任何用户交互即可开始查询,并且是使用Helix API所需的最小步骤。要自动设置它,使用您的令牌提供程序初始化一个新的Authentication API客户端,并调用
getClientCredentialsToken
方法。
测试
在测试之前,您需要安装开发依赖项
composer install --dev
这将安装phpunit、Faker和Monolog,以确保调试日志、模拟数据和测试框架本身。
为了测试应用程序,复制并重命名phpunit.xml.dist
文件,并将其重命名为phpunit.xml
。然后在其中填写与应用程序凭证相关的信息(您可以使用tests/authentication.php
文件来生成访问令牌)。完成这些步骤后,您可以使用phpunit
命令开始测试。