raideer / twitch-api
Twitch.Tv API Wrapper in php
Requires
Requires (Dev)
- mockery/mockery: 0.9.*
- phpunit/phpunit: ^5.1
This package is not auto-updated.
Last update: 2022-02-01 12:55:00 UTC
README
Twitch API wrapper in PHP
- Installation
- Basic usage
- Authenticated requests
- Resources
Installation
composer require raideer/twitch-api
Usage
Basic, unauthenticated requests.
First we need to create the main Wrapper instance. The constructor takes a Guzzle Client as its only parameter.
$client = new GuzzleHttp\Client; $wrapper = new Raideer\TwitchApi\Wrapper($client);
Now we can access various Twitch API resources using the wrapper.
You can see all the resources and their methods here:
https://github.com/raideer/twitch-api/blob/master/resources.md
https://github.com/justintv/Twitch-API#index
/* * Wrapper->resource->function() */ $response = $wrapper->Channels->getChannel('lirik'); //OR $response = $wrapper->resource('channels')->getChannel('lirik');
Note: letter capitalization desn't matter, so $wrapper->CHANNELS->getChannel()
will still work.
Some methods can take an optional array of parameters.
See the official twitch api documentation for the list of parameters.
$wrapper->Channels->getFollows('lirik', ['limit' => 40, 'direction' => 'asc']);
Authenticated requests
First we need to create an OAuth object, that will contain the necessary information for authenticating our requests.
Read more about authentication here.
$settings = [ 'client_id' => 'Your Client ID', 'client_secret' => 'Your Client Secret', 'redirect_uri' => 'Your registered redirect URI', 'state' => 'Your provided unique token', 'scope' => 'Array or space seperated string of scopes' ]; $oauth = new Raideer\TwitchApi\OAuth($settings); //Returns the authentication URL $url = $oauth->getUrl();
Once the user authorizes your application, they will be redirected to your specified URI with a code, that's necessary for obtaining the access token.
Obtaining the Access Token
You can obtain the access token by using the getResponse method. If the request is successful, OAuthResponse object will be returned. It contains the access token, refresh token and registered scopes.
$response = $oauth->getResponse($code); $response->getAccessToken(); $response->getRefreshToken(); //Token refreshing isn't implemented yet $response->getScope(); $response->hasScope($scope);
Now you can authorize the Wrapper using the authorize method.
//You can pass the OAuthResponse object directly $wrapper->authorize($response); //Or just pass the access token $wrapper->authorize($accessToken); //Or pass both access token and registered scopes array $wrapper->authorize($accessToken, $registeredScopes);
If you authorize the wrapper only by passing the access token, the Wrapper will not be able to check whether the scope you're trying to access actually exists. (Useful if you don't want to make unnecessary requests)
Now you can make authorized requests.
$wrapper->Channels->getChannel(); //Returns the authenticated user's channel
If the request is out of scope, Raideer\TwitchApi\Exceptions\OutOfScopeException
will be thrown.
Throttling (under construction)
If you need, you can enable request throttling.
$wrapper->enableThrottle(true);
Time (milliseconds) between requests can be set like so:
// 1 second throttle $wrapper->setThrottleInterval(1000);
Examples
$client = new GuzzleHttp\Client; $wrapper = new Raideer\TwitchApi\Wrapper($client); $settings = [ 'client_id' => 'myClientId', 'client_secret' => 'myClientSecret', 'redirect_uri' => 'http://localhost', 'state' => 'myUniqueToken123123', 'scope' => ['channel_editor'] ]; $oauth = new Raideer\TwitchApi\OAuth($settings); // You can also add a scope using the addScope method $oauth->addScope('channel_read'); $url = $oauth->getUrl();
$code = filter_input(INPUT_GET, 'code', FILTER_SANITIZE_STRING); $response = $oauth->getResponse($code); $wrapper->authorize($response); $channel = $wrapper->Channels->getChannel(); echo "I'm currently playing " . $channel->game;