Guía de inicio rápido de PHP

Completa los pasos descritos en el resto de esta página para crear una aplicación de línea de comandos de PHP simple que realice solicitudes a la API de Classroom.

Prerequisites

Para ejecutar esta guía de inicio rápido, necesitas los siguientes requisitos previos:

  • PHP 5.4 o superior con la interfaz de línea de comandos (CLI) y la extensión JSON instaladas
  • La herramienta de administración de dependencias Composer
  • Un proyecto de Google Cloud Platform con la API habilitada Para crear un proyecto y habilitar una API, consulta Crea un proyecto y habilita la API.

  • Una cuenta de G Suite for Education con Google Classroom habilitado

Paso 1: Instala la biblioteca cliente de Google

composer require google/apiclient:^2.0

Consulta la página de instalación de la biblioteca para conocer las opciones de instalación alternativas.

Paso 2: Configura la muestra

Crea un archivo llamado quickstart.php en tu directorio de trabajo y cópialo en el siguiente código:

classroom/quickstart/quickstart.php
require __DIR__ . '/vendor/autoload.php';

if (php_sapi_name() != 'cli') {
    throw new Exception('This application must be run on the command line.');
}

use Google\Client;
use Google\Service\Classroom;

/**
 * Returns an authorized API client.
 * @return Client the authorized client object
 */
function getClient()
{
    $client = new Client();
    $client->setApplicationName('Google Classroom API PHP Quickstart');
    $client->setScopes('https://www.googleapis.com/auth/classroom.courses.readonly');
    $client->setAuthConfig('credentials.json');
    $client->setAccessType('offline');
    $client->setPrompt('select_account consent');

    // Load previously authorized token from a file, if it exists.
    // The file token.json stores the user's access and refresh tokens, and is
    // created automatically when the authorization flow completes for the first
    // time.
    $tokenPath = 'token.json';
    if (file_exists($tokenPath)) {
        $accessToken = json_decode(file_get_contents($tokenPath), true);
        $client->setAccessToken($accessToken);
    }

    // If there is no previous token or it's expired.
    if ($client->isAccessTokenExpired()) {
        // Refresh the token if possible, else fetch a new one.
        if ($client->getRefreshToken()) {
            $client->fetchAccessTokenWithRefreshToken($client->getRefreshToken());
        } else {
            // Request authorization from the user.
            $authUrl = $client->createAuthUrl();
            printf("Open the following link in your browser:\n%s\n", $authUrl);
            print 'Enter verification code: ';
            $authCode = trim(fgets(STDIN));

            // Exchange authorization code for an access token.
            $accessToken = $client->fetchAccessTokenWithAuthCode($authCode);
            $client->setAccessToken($accessToken);

            // Check to see if there was an error.
            if (array_key_exists('error', $accessToken)) {
                throw new Exception(join(', ', $accessToken));
            }
        }
        // Save the token to a file.
        if (!file_exists(dirname($tokenPath))) {
            mkdir(dirname($tokenPath), 0700, true);
        }
        file_put_contents($tokenPath, json_encode($client->getAccessToken()));
    }
    return $client;
}


// Get the API client and construct the service object.
$client = getClient();
$service = new Classroom($client);

// Print the first 10 courses the user has access to.
try{

    $optParams = array(
        'pageSize' => 10
    );
    $results = $service->courses->listCourses($optParams);

    if (count($results->getCourses()) == 0) {
        print "No courses found.\n";
    } else {
        print "Courses:\n";
        foreach ($results->getCourses() as $course) {
            printf("%s (%s)\n", $course->getName(), $course->getId());
        }
    }
}
catch(Exception $e) {
    // TODO(developer) - handle error appropriately
    echo 'Message: ' .$e->getMessage();
}

Paso 3: Ejecuta la muestra

Ejecuta la muestra con el siguiente comando:

php quickstart.php

La primera vez que ejecutes la muestra, se te solicitará que autorices el acceso:

  1. Navega hasta la URL proporcionada en tu navegador web.

    Si aún no lo hiciste, se te solicitará que lo hagas. Si accediste a varias Cuentas de Google, se te pedirá que selecciones una cuenta para usar en la autorización.

  2. Haz clic en el botón Aceptar.
  3. Copia el código que te proporcionaron, pégalo en el símbolo de la línea de comandos y presiona Intro.

Notas

  • La información de autorización se almacena en el sistema de archivos, por lo que las ejecuciones posteriores no solicitarán autorización.
  • El flujo de autorización de este ejemplo está diseñado para una aplicación de línea de comandos. Para obtener información sobre cómo realizar una autorización en una aplicación web, consulta Usa OAuth 2.0 para aplicaciones de servidor web.

Solución de problemas

En esta sección, se describen algunos problemas comunes que puedes encontrar cuando intentas ejecutar esta guía de inicio rápido y se sugieren posibles soluciones.

Problema con el certificado SSL: no se puede obtener el certificado del emisor local

Este error indica que las bibliotecas HTTP subyacentes no pueden encontrar un almacén de certificados y, por lo tanto, no pueden configurar la conexión SSL con los servidores de Google. Consulta la documentación de la biblioteca de Guzzle para obtener información sobre cómo configurar un almacén de certificados en tu máquina.

Se detectó un argumento no válido. Falta el URI de redireccionamiento obligatorio

Este error se produce cuando el archivo credentials.json usado contiene un ID de cliente del tipo incorrecto. Este código requiere un ID de cliente de OAuth del tipo Other, que se creará cuando uses el botón del paso 1. Si creas tu propio ID de cliente, asegúrate de seleccionar el tipo correcto.

This app isn't verified

Si en la pantalla de consentimiento de OAuth se muestra el mensaje de advertencia "Esta app no está verificada", significa que tu app solicita permisos que proporcionan acceso a datos sensibles del usuario. Si tu aplicación usa permisos sensibles, debe someterse al proceso de verificación para quitar esa advertencia y otras limitaciones. Durante la fase de desarrollo, para continuar más allá de esta advertencia, selecciona Advanced > Go to {Project Name}(no seguro).

File not found error for credentials.json

Cuando ejecutes la muestra, es posible que recibas un archivo no encontrado o que no tenga ese error de credenciales.json.

Este error se produce cuando no autorizas las credenciales de la aplicación para computadoras de escritorio, como se detalla en la sección Requisitos previos anterior. Si quieres obtener información sobre cómo crear credenciales para una aplicación de escritorio, ve a Crea credenciales.

Una vez que crees las credenciales, asegúrate de que el archivo JSON descargado se guarde como credentials.json. Luego, mueve el archivo a tu directorio de trabajo con el resto del código de inicio rápido de muestra.

Lecturas adicionales