How to connect to Youtube using PHP?

I want to use youtube api to get new user subscription videos using this api call:

http://gdata.youtube.com/feeds/api/users/default/newsubscriptionvideos 

Without logging in, I get this answer:

 User authentication required. Error 401 

How can I login to youtube from php?

+7
api php youtube youtube-api login
source share
3 answers

You can use OAuth , AuthSub , or ClientLogin . ClientLogin is simple (it just uses a username / password), but it is discouraged because it requires users to pass on their credentials to you. AuthSub and OAuth do not. The Google PHP library currently only supports AuthSub ( PHP Example ) and ClientLogin.

+5
source share

Here is a simple login function. It returns an error message or 0 on success. I used my own curl lib, but it's pretty clear that $ this-> curl-> SetHeader can be replaced with curl_setopt ($ ch, CURLOPT_HTTPHEADER, $ header)

 public function login(Model_ServiceAccount $account){ $this->curl->SetHeader('Content-type', 'application/x-www-form-urlencoded'); $this->curl->post('https://www.google.com/youtube/accounts/ClientLogin', 'Email=' . $account->mail->login . '&Passwd=' . $account->mail->password . '&service=youtube&source=whatever'); if (preg_match('~Error=(.+)~', $this->curl->getResponse(), $match)) return $match[1]; if (!preg_match('~Auth=(.*)~', $this->curl->getResponse(), $match)) Toolkit::error('Unhandled error in Authentication request'); $authToken = $match[1]; $this->curl->SetHeader('Authorization: GoogleLogin auth', $this->developerKey); $this->curl->SetHeader('X-GData-Key: key=', $authToken); $this->curl->SetHeader('Content-Type', 'application/atom+xml'); return 0; } 
0
source share

This one works for me. Log in with your google account and get user channel information.

Download Code

 <?php 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; } 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; } ?> <!doctype html> <html> <head> <title>YouTube</title> </head> <body> <?=$htmlBody?> </body> </html> 
0
source share

All Articles