bulgarianhealer / laravel-twitch
Twitch PHP Wrapper for Laravel
Requires
- php: >=7.2
- ext-json: *
- guzzlehttp/guzzle: ^6.3|^7.0
- illuminate/cache: ^5.5|^6.0|^7.0|^8.0
- illuminate/console: ^5.5|^6.0|^7.0|^8.0
- illuminate/support: ^5.5|^6.0|^7.0|^8.0
Requires (Dev)
- orchestra/testbench: ^3.8|^4.0|^5.0|^6.0
- phpunit/phpunit: ^8.0|^9.0
This package is auto-updated.
Last update: 2024-09-24 16:11:21 UTC
README
PHP Twitch Helix API Wrapper for Laravel 5+
⚠️ 2020年5月1日变更
自2020年5月1日起,Twitch要求所有请求都必须包含有效的OAuth访问令牌。这可以通过使用客户端凭据流请求OAuth令牌来实现。
如果您自己不处理此问题,请确保通过配置文件中的oauth_client_credentials.auto_generate
配置项启用内置的访问令牌生成功能。
您需要通过配置或可用的设置器定义有效的<强>客户端ID强>和<强>客户端密钥强>!有关更多信息,请参阅完整配置。
目录
安装
composer require romanzipp/laravel-twitch
如果您使用Laravel 5.5+,则已完成,否则请继续。
将服务提供程序添加到您的app.php
配置文件中
romanzipp\Twitch\Providers\TwitchServiceProvider::class,
配置
将配置复制到配置文件夹
$ php artisan vendor:publish --provider="romanzipp\Twitch\Providers\TwitchServiceProvider"
将环境变量添加到您的.env
TWITCH_HELIX_KEY=
TWITCH_HELIX_SECRET=
TWITCH_HELIX_REDIRECT_URI=https://
示例
基本
$twitch = new romanzipp\Twitch\Twitch; $twitch->setClientId('abc123'); // Get User by Username $result = $twitch->getUsers(['login' => 'herrausragend']); // Check, if the query was successful if ( ! $result->success()) { return null; } // Shift result to get single user data $user = $result->shift(); return $user->id;
设置器
$twitch = new romanzipp\Twitch\Twitch; $twitch->setClientId('abc123'); $twitch->setClientSecret('abc456'); $twitch->setToken('abcdef123456'); $twitch = $twitch->withClientId('abc123'); $twitch = $twitch->withClientSecret('abc123'); $twitch = $twitch->withToken('abcdef123456');
OAuth令牌
$twitch = new romanzipp\Twitch\Twitch; $twitch->setClientId('abc123'); $twitch->setToken('abcdef123456'); $result = $twitch->getUsers(['login' => 'herrausragend']);
OAuth客户端凭据流
自2020年5月1日起,每个请求都需要一个OAuth令牌,可以使用OAuth客户端凭据流颁发。
use romanzipp\Twitch\Enums\GrantType; use romanzipp\Twitch\Twitch; $twitch = new Twitch; $twitch->setClientId('abc123'); $twitch->setClientSecret('def123'); $twitch->setToken('abcdef123456'); $result = $twitch->getOAuthToken(null, GrantType::CLIENT_CREDENTIALS, ['user:read']); if ( ! $result->success()) { return; } $accessToken = $result->data()->access_token;
分页
Twitch API返回一个paginator
字段,包含分页结果,如/streams
、/follows
或/games
。要跳转到不同的页面,必须将提供的游标附加到以下查询中,使用方向属性after
或before
。
在此示例中,我们将获取一组流并使用提供的游标来切换到下一组/前一组的数据库数据。
❗️ 为了防止无限循环或错误,请使用Result::hasMoreResults()
方法检查是否有更多结果可用。
$twitch = new romanzipp\Twitch\Twitch; // Page 1 $firstResult = $twitch->getStreams(['language' => 'de']); // Page 2 $secondResult = $twitch->getStreams(['language' => 'de'], $firstResult->next()); // Page 1 (again) $thirdResult = $twitch->getStreams(['language' => 'de'], $secondResult->back());
外观
use romanzipp\Twitch\Facades\Twitch; Twitch::withClientId('abc123')->withToken('abcdef123456')->getUsers();
分页循环示例
此示例获取所有Twitch游戏并将它们存储到数据库中。
use romanzipp\Twitch\Twitch; $twitch = new Twitch; do { $nextCursor = null; // If this is not the first iteration, get the page cursor to the next set of results if (isset($result)) { $nextCursor = $result->next(); } // Query the API with an optional cursor to the next results page $result = $twitch->getTopGames(['first' => 100], $nextCursor); foreach ($result->data as $item) { // Process the games result data } // Continue until there are no results left } while ($result->hasMoreResults());
插入用户对象
新API不包括用户对象在如关注者或bits的端点。
[ { "from_id": "123456", "to_id": "654321", "followed_at": "2018-01-01 12:00:00" } ]
您可以通过调用insertUsers方法来插入所有由from_id
标识的用户数据到from_user
。
use romanzipp\Twitch\Twitch; $twitch = new Twitch; $result = $twitch->getUsersFollows(['to_id' => 654321]); $result->insertUsers('from_id', 'from_user');
新的结果数据
[ { "from_id": "123456", "to_id": "654321", "followed_at": "2018-01-01 12:00:00", "from_user": { "id": "123456", "display_name": "HerrAusragend", "login": "herrausragend" } } ]
文档
Twitch Helix API文档:https://dev.twitch.tv/docs/api/reference
OAuth
public function getOAuthAuthorizeUrl(string $responseType = 'code', array $scopes = [], ?string $state = NULL, bool $forceVerify = false) public function getOAuthToken(?string $code = NULL, string $grantType = 'authorization_code', array $scopes = [])
广告
public function startCommercial(array $parameters = [])
分析
public function getExtensionAnalytics(array $parameters = []) public function getGameAnalytics(array $parameters = [])
Bits
public function getCheermotes(array $parameters = []) public function getBitsLeaderboard(array $parameters = []) public function getExtensionTransactions(array $parameters = [])
剪辑
public function createClip(array $parameters = []) public function getClips(array $parameters = [])
权益
public function createEntitlementUrl(array $parameters = []) public function getEntitlementsCodeStatus(array $parameters = []) public function getDropsEntitlements(array $parameters = []) public function redeemEntitlementsCode(array $parameters = [])
扩展
public function getAuthedUserExtensions() public function getAuthedUserActiveExtensions() public function disableAllExtensions() public function disableUserExtensionById(?string $parameter = NULL) public function disableUserExtensionByName(?string $parameter = NULL) public function updateUserExtensions(?string $method = NULL, ?string $parameter = NULL, bool $disabled = false)
游戏
public function getTopGames(array $parameters = [], ?Paginator $paginator = NULL) public function getGames(array $parameters = [])
激情列车
public function getHypeTrainEvents(array $parameters = [])
搜索
public function searchCategories(array $parameters = []) public function searchChannels(array $parameters = [])
直播
public function getStreamKey(array $parameters = []) public function getStreams(array $parameters = [], ?Paginator $paginator = NULL) public function createStreamMarker(array $parameters = [], array $body = []) public function getStreamMarkers(array $parameters = [], ?Paginator $paginator = NULL) public function getChannels(array $parameters = []) public function updateChannels(array $parameters = [], array $body = [])
用户
public function createUserFollows(array $parameters = [], array $body = []) public function deleteUserFollows(array $parameters = []) public function getUsers(array $parameters = []) public function getUsersFollows(array $parameters = [], ?Paginator $paginator = NULL) public function updateUser(array $parameters = []) public function getUserExtensions(array $parameters = []) public function getUserActiveExtensions(array $parameters = []) public function updateUserExtension(array $parameters = [], array $body = [])
视频
public function getVideos(array $parameters = [], ?Paginator $paginator = NULL)
订阅
public function getSubscriptions(array $parameters = [], ?Paginator $paginator = NULL)
标签
public function getStreamTags(array $parameters = []) public function getAllStreamTags(array $parameters = [], ?Paginator $paginator = NULL) public function replaceStreamTags(array $parameters = [], array $body = [])
管理
public function checkAutoModStatus(array $parameters = [], array $body = []) public function getBannedUsers(array $parameters = [], ?Paginator $paginator = NULL) public function getBannedEvents(array $parameters = [], ?Paginator $paginator = NULL) public function getModerators(array $parameters = [], ?Paginator $paginator = NULL) public function getModeratorEvents(array $parameters = [], ?Paginator $paginator = NULL)
Webhooks
public function getWebhookSubscriptions(array $parameters = []) public function subscribeWebhook(array $parameters = [], array $body = []) public function unsubscribeWebhook(array $parameters = [], array $body = []) public function buildWebhookTopic(string $path, array $parameters = [])
升级
开发
运行测试
composer test
CLIENT_ID=xxxx composer test
CLIENT_ID=xxxx CLIENT_SECRET=xxxx composer test
生成文档
composer docs
加入Twitch Dev Discord!