Action:

Channel ID:

Default Language:

Language:

Description:

END; /* * You can acquire an OAuth 2.0 client ID and client secret from the * {{ Google Cloud Console }} <{{ https://cloud.google.com/console }}> * For more information about using OAuth 2.0 to access Google APIs, please see: * * Please ensure that you have enabled the YouTube Data API for your project. */ $OAUTH2_CLIENT_ID = 'REPLACE_ME'; $OAUTH2_CLIENT_SECRET = 'REPLACE_ME'; $client = new Google_Client(); $client->setClientId($OAUTH2_CLIENT_ID); $client->setClientSecret($OAUTH2_CLIENT_SECRET); /* * This OAuth 2.0 access scope allows for full read/write access to the * authenticated user's account. */ $client->setScopes('https://www.googleapis.com/auth/youtube'); $redirect = filter_var('http://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'], FILTER_SANITIZE_URL); $client->setRedirectUri($redirect); // Define an object that will be used to make all API requests. $youtube = new Google_Service_YouTube($client); // Check if an auth token exists for the required scopes $tokenSessionKey = 'token-' . $client->prepareScopes(); if (isset($_GET['code'])) { if (strval($_SESSION['state']) !== strval($_GET['state'])) { die('The session state did not match.'); } $client->authenticate($_GET['code']); $_SESSION[$tokenSessionKey] = $client->getAccessToken(); header('Location: ' . $redirect); } if (isset($_SESSION[$tokenSessionKey])) { $client->setAccessToken($_SESSION[$tokenSessionKey]); } // Check to ensure that the access token was successfully acquired. if ($client->getAccessToken()) { // This code executes if the user enters an action in the form // and submits the form. Otherwise, the page displays the form above. if (isset($_GET['action'])) { $htmlBody = ''; $resource = $_GET['resource']; $channelId = $_GET['channelId']; $language = $_GET['language']; $defaultLanguage = $_GET['defaultLanguage']; $description = $_GET['description']; try { switch ($_GET['action']) { case 'set': setChannelLocalization($youtube, $channelId, $defaultLanguage, $language, $description, $htmlBody); break; case 'get': getChannelLocalization($youtube, $channelId, $language, $htmlBody); break; case 'list': listChannelLocalizations($youtube, $channelId, $htmlBody); break; } } catch (Google_Service_Exception $e) { $htmlBody .= sprintf('

A service error occurred: %s

', htmlspecialchars($e->getMessage())); } catch (Google_Exception $e) { $htmlBody .= sprintf('

An client error occurred: %s

', htmlspecialchars($e->getMessage())); } } $_SESSION[$tokenSessionKey] = $client->getAccessToken(); } elseif ($OAUTH2_CLIENT_ID == 'REPLACE_ME') { $htmlBody = <<Client Credentials Required

You need to set \$OAUTH2_CLIENT_ID and \$OAUTH2_CLIENT_ID before proceeding.

END; } else { // If the user hasn't authorized the app, initiate the OAuth flow $state = mt_rand(); $client->setState($state); $_SESSION['state'] = $state; $authUrl = $client->createAuthUrl(); $htmlBody = <<Authorization Required

You need to authorize access before proceeding.

END; } /** * Updates a channel's default language and sets its localized metadata. * * @param Google_Service_YouTube $youtube YouTube service object. * @param string $channelId The id parameter specifies the channel ID for the resource * that is being updated. * @param string $defaultLanguage The language of the channel's default metadata * @param string $language The language of the localized metadata * @param string $description The localized description to be set * @param $htmlBody - html body. */ function setChannelLocalization(Google_Service_YouTube $youtube, $channelId, $defaultLanguage, $language, $description, &$htmlBody) { // Call the YouTube Data API's channels.list method to retrieve channels. $channels = $youtube->channels->listChannels("brandingSettings,localizations", array( 'id' => $channelId )); // If $channels is empty, the specified channel was not found. if (empty($channels)) { $htmlBody .= sprintf('

Can\'t find a channel with channel id: %s

', $channelId); } else { // Since the request specified a channel ID, the response only // contains one channel resource. $updateChannel = $channels[0]; // Modify channel's default language and localizations properties. // Ensure that a value is set for the resource's snippet.defaultLanguage property. // To set the snippet.defaultLanguage property for a channel resource, // you actually need to update the brandingSettings.channel.defaultLanguage property. $updateChannel['brandingSettings']['channel']['defaultLanguage'] = $defaultLanguage; $localizations = $updateChannel['localizations']; if (is_null($localizations)) { $localizations = array(); } $localizations[$language] = array('description' => $description); $updateChannel['localizations'] = $localizations; // Call the YouTube Data API's channels.update method to update an existing channel. $channelUpdateResponse = $youtube->channels->update("brandingSettings,localizations", $updateChannel); $htmlBody .= "

Updated channel

'; } } /** * Returns localized metadata for a channel in a selected language. * If the localized text is not available in the requested language, * this method will return text in the default language. * * @param Google_Service_YouTube $youtube YouTube service object. * @param string $channelId The channelId parameter instructs the API to return the * localized metadata for the channel specified by the channel id. * @param string language The language of the localized metadata. * @param $htmlBody - html body. */ function getChannelLocalization(Google_Service_YouTube $youtube, $channelId, $language, &$htmlBody) { // Call the YouTube Data API's channels.list method to retrieve channels. $channels = $youtube->channels->listChannels("snippet", array( 'id' => $channelId, 'hl' => $language )); // If $channels is empty, the specified channel was not found. if (empty($channels)) { $htmlBody .= sprintf('

Can\'t find a channel with channel id: %s

', $channelId); } else { // Since the request specified a channel ID, the response only // contains one channel resource. $localized = $channels[0]["snippet"]["localized"]; $htmlBody .= "

Channel

'; } } /** * Returns a list of localized metadata for a channel. * * @param Google_Service_YouTube $youtube YouTube service object. * @param string $channelId The channelId parameter instructs the API to return the * localized metadata for the channel specified by the channel id. * @param $htmlBody - html body. */ function listChannelLocalizations(Google_Service_YouTube $youtube, $channelId, &$htmlBody) { // Call the YouTube Data API's channels.list method to retrieve channels. $channels = $youtube->channels->listChannels("snippet,localizations", array( 'id' => $channelId )); // If $channels is empty, the specified channel was not found. if (empty($channels)) { $htmlBody .= sprintf('

Can\'t find a channel with channel id: %s

', $channelId); } else { // Since the request specified a channel ID, the response only // contains one channel resource. $localizations = $channels[0]["localizations"]; $htmlBody .= "

Channel

'; } } ?> Set and retrieve localized metadata for a channel