README

This library is a PHP client for the Twitch APIs. It will allow you to send requests to Twitch easily, using
authentication or not, with a simple design that allows embedding into services. It also relies on as few PHP
dependencies as possible, it only needs the cURL extension to be installed, and depends on psr/log for its
LoggerInterface.

Compatibility : PHP 7.0+

Note: this library is still quite incomplete API-wise. Those will be added progressively. You can still add
functionality quite easily though by adding to the already existing endpoints or by creating missing endpoints.
If then you want to contribute it back to the project, just do a pull request :)

Install

Using composer:

composer install ylorant/twitch-php-client

Basic usage (using Kraken)

For more info about token providers and authentication, see the next section.

<?phpuseTwitchClient\API\Kraken\Kraken;useTwitchClient\Authentication\DefaultTokenProvider;// Create a default token provider$tokenProvider=newDefaultTokenProvider('client_id', 'client_secret');// Create the client for the specific API we want to query, here it's Kraken$kraken=newKraken($tokenProvider);// Fetch info for an user, for example$userInfo=$kraken->users->info('esamarathon');

Authentication: getting tokens

For some write operations, Twitch requires you to use an access token linked to the entity you want to edit. For this
purpose, there's an API available to request access tokens to specific
user accounts (using the "Authorize app" page you might have seen already) with multiple authentication workflows.

This library provides a way to fetch tokens using the OAuth Authorization code workflow. Here is a sample code that
would work to fetch an access token. You can see another example in the file tests/authentication.php.

<?phpuseTwitchClient\API\Auth\Authentication;useTwitchClient\Authentication\DefaultTokenProvider;// Create the token provider using the client ID and secret.$tokenProvider=newDefaultTokenProvider('client_id', 'client_secret');$redirectURI='http://localhost/'; // 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=newAuthentication($tokenProvider);// If the call has a GET parameter named 'code', then we're on the redirect URIif (!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 pageheader('Location: '.$authorizeURL);}

The TokenProvider interface

Twitch API relies on user and app authentication to allow access to its API, so to account for that, this library
uses a simple interface called the TokenProvider (at TwitchClient\Authentication\TokenProvider). This interface
describes how the library will retrieve app and user authentication.

You can choose to implement your own token provider by creating an object implementing the TokenProvider interface,
in case you need to store specifically your user tokens, or, if you use a more basic workflow that needs to set
the tokens once, you can use the DefaultTokenProvider to implement a standard token provider functionality to the
client.

Testing

Before testing, you need to install development dependencies :

composer install --dev

This will install phpunit, Faker and Monolog to ensure debbuging logs, fake data and the testing framework itself.

To test the app, duplicate and rename the phpunit.xml.dist file and rename it to phpunit.xml, then fill out in it
the info relative to the app credentials (you can use the tests/authentication.php file to generate an access token).
Once this is done, you can start tests using the phpunit command.