* 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'; /* You can replace $VIDEO_ID with one of your videos' id, channel id with your channel's id, * and text with the comment you want to be added. */ $VIDEO_ID = 'REPLACE_ME'; $CHANNEL_ID = 'REPLACE_ME'; $TEXT = '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 and requires requests to use an SSL connection. */ $client->setScopes('https://www.googleapis.com/auth/youtube.force-ssl'); $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()) { try { # All the available methods are used in sequence just for the sake of an example. # Insert channel comment by omitting videoId. # Create a comment snippet with text. $commentSnippet = new Google_Service_YouTube_CommentSnippet(); $commentSnippet->setTextOriginal($TEXT); # Create a top-level comment with snippet. $topLevelComment = new Google_Service_YouTube_Comment(); $topLevelComment->setSnippet($commentSnippet); # Create a comment thread snippet with channelId and top-level comment. $commentThreadSnippet = new Google_Service_YouTube_CommentThreadSnippet(); $commentThreadSnippet->setChannelId($CHANNEL_ID); $commentThreadSnippet->setTopLevelComment($topLevelComment); # Create a comment thread with snippet. $commentThread = new Google_Service_YouTube_CommentThread(); $commentThread->setSnippet($commentThreadSnippet); // Call the YouTube Data API's commentThreads.insert method to create a comment. $channelCommentInsertResponse = $youtube->commentThreads->insert('snippet', $commentThread); # Insert video comment $commentThreadSnippet->setVideoId($VIDEO_ID); // Call the YouTube Data API's commentThreads.insert method to create a comment. $videoCommentInsertResponse = $youtube->commentThreads->insert('snippet', $commentThread); // Call the YouTube Data API's commentThreads.list method to retrieve video comment threads. $videoComments = $youtube->commentThreads->listCommentThreads('snippet', array( 'videoId' => $VIDEO_ID, 'textFormat' => 'plainText', )); if (empty($videoComments)) { $htmlBody .= "

Can\'t get video comments.

"; } else { $videoComments[0]['snippet']['topLevelComment']['snippet']['textOriginal'] = 'updated'; $videoCommentUpdateResponse = $youtube->commentThreads->update('snippet', $videoComments[0]); } // Call the YouTube Data API's commentThreads.list method to retrieve channel comment threads. $channelComments = $youtube->commentThreads->listCommentThreads('snippet', array( 'channelId' => $CHANNEL_ID, 'textFormat' => 'plainText', )); if (empty($channelComments)) { $htmlBody .= "

Can\'t get channel comments.

"; } else { $channelComments[0]['snippet']['topLevelComment']['snippet']['textOriginal'] = 'updated'; $channelCommentUpdateResponse = $youtube->commentThreads->update('snippet', $channelComments[0]); } $htmlBody .= "

Inserted channel comment for

'; $htmlBody .= "

Inserted video comment for

'; $htmlBody .= "

Video Comments

'; $htmlBody .= "

Channel Comments

'; $htmlBody .= "

Updated channel comment for

'; $htmlBody .= "

Updated video comment for

'; } 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; } ?> Insert, list and update top-level comments