Hola a todos, en este nuevo ejemplo de APIs usaremos Google Calendar, recuerden que para hacer estos ejemplo necesitan tener una cuenta de Google.
Google Calendar es una aplicacion de Google que nos permite tener una agenda de eventos y gestionarlos mediante el sitio web o la aplicacion de android, pero Google ofrece una API con la cual podemos leer o manipular los eventos de Google Calandar desde cualquier plataforma, en esta ocasion usaremos PHP.
Obtener la libreria de APIs cliente de Google
Debemos descargar la libreria cliente de Google desde el repositorio en Github: https://github.com/google/google-api-php-client recuerden descargar el release mas actual, al momento de este articulo usaremos la version 2.0.3.
Obtener las credenciales de acceso
Te invito a leer: Google Developers – Obtener la API KEY
Para usar Google Calendar debemos tener credenciales mediante el método oAuth 2.0 y debemos considerar lo siguiente:
- Nombre de Producto: El nombre de producto es el nombre que se le mostrara al cliente.
- Tipo de la aplicación: El tipo de la aplicación puede ser: aplicación web, android, aplicación de Chrome, iOs, etc.
- Nombre: Sirve para identificar entre credenciales, ya que podemos tener muchas credenciales para un mismo proyecto.
- URI de redireccionamiento autorizada: Muy importante ya que esta dirección sirve para que la aplicación redireccione, si intentamos direccionar de nuestra aplicación a una URI no autorizada entonces tendremos un error.
El codigo
Les dejo el codigo en un gist de Github:
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
<html> | |
<body> | |
<?php | |
session_start(); | |
// print_r($_SESSION); | |
if(isset($_GET["logout"])){ | |
session_destroy(); | |
} | |
$redirect_uri ='http://localhost/g_projects/hello_calendar/index.php'; | |
require_once '../google-api-php-client/vendor/autoload.php'; | |
$client = new Google_Client(); | |
// Get your credentials from the console | |
$client->setClientId('959193925480-4q1nivhp9lu2r400dpg87cqk67g4ts3b.apps.googleusercontent.com'); | |
$client->setClientSecret('xmkHpH09DgkPamA_ma9ovxu6'); | |
$client->setRedirectUri($redirect_uri); | |
$client->addScope('profile'); | |
$client->addScope(Google_Service_Calendar::CALENDAR); | |
print_r($client->getAccessToken()); | |
$authUrl = $client->createAuthUrl(); | |
if (isset($_GET['code'])) { | |
$client->authenticate($_GET['code']); | |
$_SESSION['access_token'] = $client->getAccessToken(); | |
header('Location: ' . filter_var($redirect_uri, FILTER_SANITIZE_URL)); | |
} | |
if (!$client->getAccessToken() && !isset($_SESSION['access_token'])) { | |
$authUrl = $client->createAuthUrl(); | |
print "<a class='login' href='$authUrl'>Conectar</a>"; | |
} | |
if (isset($_SESSION['access_token'])) { | |
print "<a class='logout' href='".$_SERVER['PHP_SELF']."?logout=1'>Salir</a><br>"; | |
$client->setAccessToken($_SESSION['access_token']); | |
$service = new Google_Service_Calendar($client); | |
$results = $service->events->listEvents('primary', array()); | |
if (count($results->getItems()) == 0) { | |
print "<h3>No hay Eventos</h3>"; | |
} else { | |
print "<h3>Proximos Eventos</h3>"; | |
echo "<table border=1>"; | |
foreach ($results->getItems() as $event) { | |
echo "<tr>"; | |
$start = $event->start->dateTime; | |
if (empty($start)) { | |
$start = $event->start->date; | |
} | |
echo "<td>".$event->getSummary()."</td>"; | |
echo "<td>".$start."</td>"; | |
echo "</tr>"; | |
} | |
echo "<table>"; | |
} | |
} | |
?> | |
</body> | |
</html> |
Por cierto, en este ejemplo les presto mis ClientId y ClientSecret, pero recuerden que ustedes deben seguir los pasos y obtener sus propios codigos, ya que mis codigos en cualquier momento pueden cambiar.
Si leyeron mi articulo anterior http://evilnapsis.com/2015/12/02/api-conectar-y-listar-archivos-de-google-drive-con-php/, si no les recomiento leerlo.
En el articulo de Google Drive explico como nos da acceso Google mediante el protocolo OAuth 2.0, para llegar a obtener un Cliente autenticado.
Una vez con el cliente autenticado procedemos a hacer una consulta al Google_Service_Calendar:
[code language=”php”]$service = new Google_Service_Calendar($client);
[/code]Usaremos $service como objeto podremos hacer consultas al servicio Calendar, en la siguiente consulta obtenemos los eventos mas recientes:
[code language=”php”]$results = $service->events->listEvents(‘primary’, array());
[/code]Y despues mediante el metodo $results->getItems() obtenemos los eventos, con un foreach recorremos y los mostramos.
Resultado
Finalizando
Espero que este ejemplo les ayude y si tienen dudas por favor escriban en los comentarios 😉