YouTube API Get Logged In User Channel Information In PHP
After a long research to get logged in user information of  Youtube channel, Only this solution is working for me. So i am sharing here it will help someone. You can use your google account to login with authentication to get Youtube channel information. Let's see step by step.
Step1: Go to google developer page and create new project to get CLIENT_ID and CLIENT_SECRET
Step2: Please ensure that you have enabled the YouTube Data API for your project.
Step3: Create index.php and add following code.
Demo & Download
Using this Function you can get Youtube channel information using access token
Step1: Go to google developer page and create new project to get CLIENT_ID and CLIENT_SECRET
Step2: Please ensure that you have enabled the YouTube Data API for your project.
Step3: Create index.php and add following code.
Demo & Download
require_once 'src/Google_Client.php';
require_once 'src/contrib/Google_YoutubeService.php';
session_start();
$OAUTH2_CLIENT_ID = 'XXXXXXXXXXXXXXXX';
$OAUTH2_CLIENT_SECRET = 'XXXXXXXXXXXXXXXX';
$client = new Google_Client();
$client->setClientId($OAUTH2_CLIENT_ID);
$client->setClientSecret($OAUTH2_CLIENT_SECRET);
$redirect = filter_var('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'],
  FILTER_SANITIZE_URL);
$client->setRedirectUri($redirect);
$youtube = new Google_YoutubeService($client);
if (isset($_GET['code'])) 
{
    if (strval($_SESSION['state']) !== strval($_GET['state'])) 
    {
        die('The session state did not match.');
    }
    $client->authenticate();
    $_SESSION['token'] = $client->getAccessToken();
    header('Location: ' . $redirect);
}
if (isset($_SESSION['token'])) 
{
  $client->setAccessToken($_SESSION['token']);
}
$json_output = json_decode($client->getAccessToken());
$token = $json_output->access_token;   
if ($client->getAccessToken()) 
{        
    $userid = getYoutubeData($token);
    $htmlBody = "SubscriberCount: ".youtubefollowers($userid);
    $_SESSION['token'] = $client->getAccessToken();   
}
else 
{
  $state = mt_rand();
  $client->setState($state);
  $_SESSION['state'] = $state;
  $authUrl = $client->createAuthUrl();
  $htmlBody = <<<END
  <h3>Connect to youtube</h3>
  <p>You need to <a href="$authUrl">Connect</a> before proceeding.<p>
  END;
}
function getYoutubeData($token)
{   
    $json_url ='https://www.googleapis.com/youtube/v3/channels?part=contentDetails&mine=true&access_token='.$token;
    $json = file_get_contents($json_url);
    $json_output = json_decode($json);
    
    if($json_output->items[0]->id){
            $id = $json_output->items[0]->id;
    }else{
            $id = "";
    }
    return $id;
}
This Function will return Youtube channel subscriber using channel ID
function youtubefollowers($channelID)
{   
    $json_url ='https://www.googleapis.com/youtube/v3/channels?part=statistics&id='.$channelID.'&key=AIzaSyAlgOkFu2KlYJAQwt5j3jO1rUARpPzAIww';
    $json = file_get_contents($json_url);
    $json_output = json_decode($json);
    
    if($json_output->items[0]->statistics->subscriberCount){
            $subscriberCount = $json_output->items[0]->statistics->subscriberCount;
    }else{
            $subscriberCount = 0;
    }
    return $subscriberCount;
}
Now you can display output as following
<!doctype html>
<html>
  <head>
    <title>YouTube</title>
  </head>
  <body>
   <?=$htmlBody?>
  </body>
</html>
Thanks for visiting my blog. Feel free to share your feedback.
Please support us, Like us on Facebook.
Subscribe to:
Post Comments (Atom)
 
 
        
 
Hi,
ReplyDeleteyour code give me error:
Notice: Trying to get property of non-object in D:\xampp-portable\htdocs\xampp\ernik\live\HK_Youtube\index.php on line 44
Hi,
ReplyDeleteIs there any way to get current user information like email firstname, lastname? I want to use login option using Youtube in my website.
thanks
ReplyDeletethanks
ReplyDelete