* 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, and text with the * comment you want to be added. */ $VIDEO_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. // Call the YouTube Data API's commentThreads.list method to retrieve video comment threads. $videoCommentThreads = $youtube->commentThreads->listCommentThreads('snippet', array( 'videoId' => $VIDEO_ID, 'textFormat' => 'plainText', )); $parentId = $videoCommentThreads[0]['id']; # Create a comment snippet with text. $commentSnippet = new Google_Service_YouTube_CommentSnippet(); $commentSnippet->setTextOriginal($TEXT); $commentSnippet->setParentId($parentId); # Create a comment with snippet. $comment = new Google_Service_YouTube_Comment(); $comment->setSnippet($commentSnippet); # Call the YouTube Data API's comments.insert method to reply to a comment. # (If the intention is to create a new top-level comment, commentThreads.insert # method should be used instead.) $commentInsertResponse = $youtube->comments->insert('snippet', $comment); // Call the YouTube Data API's comments.list method to retrieve existing comment replies. $videoComments = $youtube->comments->listComments('snippet', array( 'parentId' => $parentId, 'textFormat' => 'plainText', )); if (empty($videoComments)) { $htmlBody .= "

Can\'t get video comments.

"; } else { $videoComments[0]['snippet']['textOriginal'] = 'updated'; // Call the YouTube Data API's comments.update method to update an existing comment. $videoCommentUpdateResponse = $youtube->comments->update('snippet', $videoComments[0]); // Call the YouTube Data API's comments.setModerationStatus method to set moderation // status of an existing comment. $youtube->comments->setModerationStatus($videoComments[0]['id'], 'published'); // Call the YouTube Data API's comments.markAsSpam method to mark an existing comment as spam. $youtube->comments->markAsSpam($videoComments[0]['id']); // Call the YouTube Data API's comments.delete method to delete an existing comment. $youtube->comments->delete($videoComments[0]['id']); } $htmlBody .= "

Video Comment Replies

'; $htmlBody .= "

Replied to a comment for

'; $htmlBody .= "

Updated 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, update, moderate, mark and delete comments.