Ver Mensaje Individual
  #1 (permalink)  
Antiguo 21/06/2015, 22:40
helacer
 
Fecha de Ingreso: mayo-2006
Ubicación: Bogotá
Mensajes: 2.061
Antigüedad: 18 años
Puntos: 50
listar videos api youtube v3

Buenas... necesito para mi pagina web listar los videos de una lista que tengo en Youtube...

Ya descargue las librerías de Google que incluye el script
Ya entre a google console y active la api y genere los datos para autenticarme con oauth
Configuro los datos en el script pero me sale esto y no logro hacerlo funcionar.. alguien que lo haya usado o lo pueda probar que me ayude a identificar que esta pasando, gracias

Authorization Required

You need to authorize access before proceeding.



"Este script esta en la API de Google pero no me funciona"
Código PHP:
<?php
// Call set_include_path() as needed to point to your client library.
require_once 'Google/Client.php';
require_once 
'Google/Service/YouTube.php';
session_start();

/*
 * You can acquire an OAuth 2.0 client ID and client secret from the
 * Google Developers Console <https://console.developers.google.com/>
 * For more information about using OAuth 2.0 to access Google APIs, please see:
 * <https://developers.google.com/youtube/v3/guides/authentication>
 * 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);
$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);

if (isset(
$_GET['code'])) {
  if (
strval($_SESSION['state']) !== strval($_GET['state'])) {
    die(
'The session state did not match.');
  }

  
$client->authenticate($_GET['code']);
  
$_SESSION['token'] = $client->getAccessToken();
  
header('Location: ' $redirect);
}

if (isset(
$_SESSION['token'])) {
  
$client->setAccessToken($_SESSION['token']);
}

// Check to ensure that the access token was successfully acquired.
if ($client->getAccessToken()) {
  try {
    
// Call the channels.list method to retrieve information about the
    // currently authenticated user's channel.
    
$channelsResponse $youtube->channels->listChannels('contentDetails', array(
      
'mine' => 'true',
    ));

    
$htmlBody '';
    foreach (
$channelsResponse['items'] as $channel) {
      
// Extract the unique playlist ID that identifies the list of videos
      // uploaded to the channel, and then call the playlistItems.list method
      // to retrieve that list.
      
$uploadsListId $channel['contentDetails']['relatedPlaylists']['uploads'];

      
$playlistItemsResponse $youtube->playlistItems->listPlaylistItems('snippet', array(
        
'playlistId' => $uploadsListId,
        
'maxResults' => 50
      
));

      
$htmlBody .= "<h3>Videos in list $uploadsListId</h3><ul>";
      foreach (
$playlistItemsResponse['items'] as $playlistItem) {
        
$htmlBody .= sprintf('<li>%s (%s)</li>'$playlistItem['snippet']['title'],
          
$playlistItem['snippet']['resourceId']['videoId']);
      }
      
$htmlBody .= '</ul>';
    }
  } catch (
Google_Service_Exception $e) {
    
$htmlBody .= sprintf('<p>A service error occurred: <code>%s</code></p>',
      
htmlspecialchars($e->getMessage()));
  } catch (
Google_Exception $e) {
    
$htmlBody .= sprintf('<p>An client error occurred: <code>%s</code></p>',
      
htmlspecialchars($e->getMessage()));
  }

  
$_SESSION['token'] = $client->getAccessToken();
} else {
  
$state mt_rand();
  
$client->setState($state);
  
$_SESSION['state'] = $state;

  
$authUrl $client->createAuthUrl();
  
$htmlBody = <<<END
  <h3>Authorization Required</h3>
  <p>You need to <a href="$authUrl">authorize access</a> before proceeding.<p>
END;
}
?>

<!doctype html>
<html>
  <head>
    <title>My Uploads</title>
  </head>
  <body>
    <?=$htmlBody?>
  </body>
</html>