Magento 2, Magento Development, Customization, Extension Development and Integration, Optimization, SEO and Responsive Design

Magento 2, Magento Development, Customization, Extension Development and Integration, Optimization, SEO and Responsive Design

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

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;
}
Using this Function you can get Youtube channel information using access token
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.

  1. Hi,

    your 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

    ReplyDelete
  2. Hi,

    Is there any way to get current user information like email firstname, lastname? I want to use login option using Youtube in my website.

    ReplyDelete

 

Copyright @ 2017 HKBlog.