Twitch Api Kullanımı

Bugünlerde hep bir api kullanma isteği var bende nedendir bilmiyorum.Belkide kolay geldiği için olabilir.Twitch.tv‘nin bize sunmuş olduğu api sistemini kullanarak birkaç işlem yapacağız.

Neler Yapacağız ?

  • Twitch.tv developer sayfasına girip bir tane uygulama oluşturacağız.
  • Oluşturduğumuz uygulamanın client ID’sini alacağız.
  • Aldığımız Client ID ile birkaç işlem yapacağız.

Uygulama Oluşturmak

Buraya tıklayarak uygulama oluşturma sayfasına gidiniz.

Clien İd Almak

Uygulamalarınızın olduğu sayfaya gidiniz. Oluşturmuş olduğunuz uygulamanın yanındaki yönet butonuna tıklayın.Karşınıza çıkan İstemci Kimliği anahtarını Alınız.

Ardından Hemen altında bulunan istemci parolasına tıklayarak bir parola almalısınız.

İstemci kimliği ( Client ID ) ve İstemci Paroları ( Client Secret ) Twitch ile giriş yaptırmada işimize yarayacak.Bu yüzden bir kenara not ediniz.

İşlem Kısmı

İlk olarak twitch ile giriş yaptırma işlemini sizlere göstereceğim. Bunun için Twitchdev’in bizlere sunmuş olduğu kütüphaneyi kullanacağız.

Kütüphaneyi composer ile projemize dahil edeceğiz.Composer‘ın ne olduğunu bilmeyen arkadaşlar Burada ki yazıma giderek öğrenebilirler.

composer require league/oauth2-client

Yukarıdaki kod ile kütüphaneyi projenize dahil edebilirsiniz.

Eğer dosyaları indiremediyseniz korkmayın! Tüm dökümanları Github sayfamda paylaşıyorum.Yazımın sonunda bu konuyla ilgili tüm Dosyaları sizlerle paylaşacağım.

Twitch İle Giriş Yapmak

Kütüphanemizi indirdiysek Twitch ile giriş yapabiliriz.

İlk olarak include.php Adında bil php dosyası oluşturuyoruz ve içerisine altta verdiğim kodu kopyalayıp yapıştırıyoruz.

<?php
/*
 
Copyright 2017 Amazon.com, Inc. or its affiliates. All Rights Reserved.
 
Licensed under the Apache License, Version 2.0 (the "License"). You may not use this file except in compliance with the License. A copy of the License is located at
 
    http://aws.amazon.com/apache2.0/
 
or in the "license" file accompanying this file. This file is distributed on an "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. See the License for the specific language governing permissions and limitations under the License.
 
*/
 
require 'vendor/autoload.php';
 
use League\OAuth2\Client\Provider\Exception\IdentityProviderException;
use League\OAuth2\Client\Token\AccessToken;
use League\OAuth2\Client\Tool\BearerAuthorizationTrait;
use Psr\Http\Message\ResponseInterface;
use League\OAuth2\Client\Provider\AbstractProvider;
use League\OAuth2\Client\Provider\GenericResourceOwner;
 
class TwitchProvider extends AbstractProvider
{
    use BearerAuthorizationTrait;
 
    private $urlAuthorize;
    private $urlAccessToken;
    private $urlResourceOwnerDetails;
    private $accessTokenMethod;
    private $accessTokenResourceOwnerId;
    private $scopeSeparator;
    private $scopes = null;
    private $responseError = 'error';
    private $responseCode;
    private $responseResourceOwnerId;
 
    public function __construct(array $options = [])
    {
        $possible   = $this->getConfigurableOptions();
        $configured = array_intersect_key($options, array_flip($possible));
 
        foreach ($configured as $key => $value) {
            $this->$key = $value;
        }
 
        // Remove all options that are only used locally
        $options = array_diff_key($options, $configured);
 
        parent::__construct($options);
    }
 
    protected function getConfigurableOptions()
    {
        return ['accessTokenMethod',
                'accessTokenResourceOwnerId',
                'scopeSeparator',
                'responseError',
                'responseCode',
                'responseResourceOwnerId',
                'scopes',
        ];
    }
 
    public function getBaseAuthorizationUrl()
    {
        return 'https://id.twitch.tv/oauth2/authorize';
    }
 
    public function getBaseAccessTokenUrl(array $params)
    {
        return 'https://id.twitch.tv/oauth2/token';
    }
 
    public function getResourceOwnerDetailsUrl(AccessToken $token)
    {
        return 'https://api.twitch.tv/helix/users';
    }
 
    public function getDefaultScopes()
    {
        return $this->scopes;
    }
 
    protected function getScopeSeparator()
    {
        return ' ';
    }
 
    protected function checkResponse(ResponseInterface $response, $data)
    {
        if (!empty($data[$this->responseError])) {
            $error = $data[$this->responseError];
            $code  = $this->responseCode ? $data[$this->responseCode] : 0;
            throw new IdentityProviderException($error, $code, $data);
        }
    }
 
    protected function createResourceOwner(array $response, AccessToken $token)
    {
        return new GenericResourceOwner($response, $this->responseResourceOwnerId);
    }
 
    protected function getDefaultHeaders()
    {
        return ['Client-ID' => $this->clientId, 'Accept' => 'application/vnd.twitchtv.v5+json'];
    }
 
    protected function getAuthorizationHeaders($token = NULL)
    {
        return ['Authorization' => 'Bearer '.$token];
    }
}

Ardından Dosya dizinizin bulunduğu alana giris.php adında bir dosya oluşturunuz ve içerisine alttaki kodları yapıştırıyoruz.

<?php
 
 
require 'twitch.php'; // Twitch.php projemize reqire ediyoruz
 
$provider = new TwitchProvider([
    'clientId'                => 'tm2zyvvqdjdqj1mjl54aqcv7bhys4p',     // Uygulamanızın İstemci kimliği
    'clientSecret'            => 'pmlc1ci0xqebq3iva50wgjbw3e1o7o', // Uygulamanızın İstemci Parolası
    'redirectUri'             => 'http://localhost/twitch/callback.php',  // Yeniden Yönlendirme URL , Uygulama oluştururken belirtmiştik
    'scopes'                  => ['channel_subscriptions']  // Giriş Yapan Kullanıcıların nelereine ulaşabileceğiniz
]);
 
// If we don't have an authorization code then get one
if (!isset($_GET['code'])) {
 
    // Fetch the authorization URL from the provider, and store state in session
    $authorizationUrl = $provider->getAuthorizationUrl();
    $_SESSION['oauth2state'] = $provider->getState();
 
    // Display link to start auth flow
    echo "<html><a href=\"$authorizationUrl\">Twitch İle Giriş Yap</a><html>";
    exit;
 
// Check given state against previously stored one to mitigate CSRF attack
} else {
 
    echo "Giriş Başarılı";
 
}

Şimdi sırada uygulamanın bizi yönlendireceği callback url yi yapmak kaldı.callback url, uygulama oluşturuken belirlediğimiz bir urldi.Ben https://kodd.xyz/twitch/callback.php Yaptığım için callback.php adında dosya oluşturdum sizler nasıl doldurduysanız ona göre bir dosya oluşturunuz.İçerisine Alttaki kodları yapıştırınız.

<?php 
        session_start();
        require 'twitch.php'; // Twitch.php projemize reqire ediyoruz
 
         
        $provider = new TwitchProvider([
            'clientId'                => 'tm2zyvvqdjdqj1mjl54aqcv7bhys4p',     // Uygulamanızın İstemci kimliği
            'clientSecret'            => 'pmlc1ci0xqebq3iva50wgjbw3e1o7o', // Uygulamanızın İstemci Parolası
            'redirectUri'             => 'http://localhost/twitch/callback.php',  // Yeniden Yönlendirme URL , Uygulama oluştururken belirtmiştik
            'scopes'                  => ['channel_subscriptions']  // Giriş Yapan Kullanıcıların nelereine ulaşabileceğiniz
        ]);
 
// If we don't have an authorization code then get one
 
 
        // Get an access token using authorization code grant.
        $accessToken = $provider->getAccessToken('authorization_code', [
            'code' => $_GET["code"]
        ]);
        
         
         
 
        // Using the access token, get user profile
        $resourceOwner = $provider->getResourceOwner($accessToken);
        $user = $resourceOwner->toArray();
        $_SESSION["token"] = htmlspecialchars($accessToken->getToken()); // access tokeniniz
        $_SESSION["refresh"] = htmlspecialchars($accessToken->getRefreshToken()); // refresh Tokeniniz
        $_SESSION["kadi"] = htmlspecialchars($user["data"][0]['display_name']); // Kullanıcı adınız
        $_SESSION["bio"] = htmlspecialchars($user["data"][0]['description']); // açıklamanız
        $_SESSION["resim"] = htmlspecialchars($user["data"][0]['profile_image_url']); // presim
         
        echo "Giriş Başarılı";
         
        header('Location: index.php');
 
 ?>

Son olarak index.php oluşturalım ve bize gerekli olan access tokenimizi ekrana yazdıralım.

<?php 
 
session_start();
 
 ?>
 
 <html>
    <head>
        <title>
            <?php echo $_SESSION["kadi"]; ?>
        </title>
    </head>
    <body>
         
        <div>Hoş Geldin <?php echo $_SESSION["kadi"]; ?><img style="height: 20px;border-radius: 100px;" src="<?php echo $_SESSION["resim"]; ?>" alt=""></div>
        <div>
             
            <h2>Access_tokenin = <?php echo $_SESSION["token"]; ?></h2>
            <h2>Refresh_tokenin = <?php echo $_SESSION["refresh"]; ?></h2>
        </div>
 
    </body>
 </html>

Twitch İle başarılı bir şekilde giriş yaptık.Buradaki access token ileride işinize yarayabilir.Bazı işlemlerde access token gerektiriyor.

Klip Verilerini Almak

Bir kullanıcının popüler kliplerini çekeceğiz.Verileri almadan önce twitch v5 apisinin dökümanlarına bakmayı unutmayınız.Bu dökümanlar sayesinde veri çekme işlemlerini yapıyoruz.

İlk başlarda aldığımız Client ID ile klip bilgilerini çekeceğiz.


$th = curl_init();

curl_setopt(
    $th, 
    CURLOPT_HTTPHEADER,
    array(
        'Accept: application/vnd.twitchtv.v5+json',  // BURASI SABİ
        'Client-ID: 56aqt7azf80fdrv2iispvyyj9dgw2l'  // İSTEMCİ KİMLİĞİNİZİ GİRİNİZ
    )
);


$kadi = 'XANTAREScN'; // KLİP CEKMEK İSTEDİĞİNİZ HESABIN KULLANICI ADI

curl_setopt($th, CURLOPT_URL, 'https://api.twitch.tv/kraken/clips/top?limit=10&amp;amp;channel='.$kadi);


curl_setopt($th, CURLOPT_RETURNTRANSFER, 1);

$t = curl_exec($th);
curl_close($th);

$stast = json_decode($t,true); // DEKODE ETTİK

print_r($stast); // DÖKÜMANLARI EKRANA BASTIK

Canlı Yayınları almak

Bir oyuna ait canlı yayınları listeleyeceğiz. Yukarıda yaptığımız işlemlerins aynısını yapacağız sadece CURLOPT_URL farklı olacak.

$th = curl_init();

curl_setopt(
    $th, 
    CURLOPT_HTTPHEADER,
    array(
        'Accept: application/vnd.twitchtv.v5+json',  // BURASI SABİ
        'Client-ID: 56aqt7azf80fdrv2iispvyyj9dgw2l'  // İSTEMCİ KİMLİĞİNİZİ GİRİNİZ
    )
);


$oyun = 'csgo'; // CEKMEK İSTEDİĞİNİZ OYUN

curl_setopt($th, CURLOPT_URL, 'https://api.twitch.tv/kraken/search/streams?query='.$oyun.'&amp;amp;live=true');


curl_setopt($th, CURLOPT_RETURNTRANSFER, 1);

$t = curl_exec($th);
curl_close($th);

$stast = json_decode($t,true); // DEKODE ETTİK

print_r($stast); // DÖKÜMANLARI EKRANA BASTIK

Takip Ettiğimiz Yayınları Çekmek

Takip ettiğimiz kişilerin yayınlarını çekmek için access tokene ihtiyacımız var.biz access tokeni twitch ile giriş yaparak almıştık .Şimdi onu burada kullanacağız.

session_start();
$th = curl_init();

curl_setopt(
    $th, 
    CURLOPT_HTTPHEADER,
    array(
        'Accept: application/vnd.twitchtv.v5+json',  // BURASI SABİ
        'Client-ID: tm2zyvvqdjdqj1mjl54aqcv7bhys4p',  // İSTEMCİ KİMLİĞİNİZİ GİRİNİZ
        'Authorization: OAuth '.$_SESSION["token"]  //ACCESS TOKENİMİZ
    )
);


curl_setopt($th, CURLOPT_URL, 'https://api.twitch.tv/kraken/streams/followed');

curl_setopt($th, CURLOPT_RETURNTRANSFER, 1);

$t = curl_exec($th);
curl_close($th);

$stast = json_decode($t,true); // DEKODE ETTİK

print_r($stast); // DÖKÜMANLARI EKRANA BASTIK

Populer Oyunlar

Twitch üzerinde popüler olarak oynanan oyunlar listeliyoruz.

$th = curl_init();

curl_setopt(
    $th, 
    CURLOPT_HTTPHEADER,
    array(
        'Accept: application/vnd.twitchtv.v5+json',  // BURASI SABİ
        'Client-ID: tm2zyvvqdjdqj1mjl54aqcv7bhys4p'  // İSTEMCİ KİMLİĞİNİZİ GİRİNİZ
    )
);

curl_setopt($th, CURLOPT_URL, 'https://api.twitch.tv/kraken/games/top');

curl_setopt($th, CURLOPT_RETURNTRANSFER, 1);

$t = curl_exec($th);
curl_close($th);

$stast = json_decode($t,true); // DEKODE ETTİK

print_r($stast); // DÖKÜMANLARI EKRANA BASTIK


Twitch apisi ile işimiz bukadardı .Tüm dökümanları github sayfamda paylaştım .Aşağıdaki butona tıklayarak gerekli dökümanları indirebileceğiniz github sayfayama gidebilirsiniz.

Bugünlük bukadr . Twitch apisi ile yapmamı istediğiniz herhangi birşey olursa bana yorumlarda belirtmeyi unutmayınız.

Yorum (1)

  • ertuğrul| Ocak 10, 2019

    keşke nereleri değiştereceğiz onuda yazsaydınız

  • Bir cevap yazın

    E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir