ManuelRomero/DAW/dwes/Rest

De WikiEducator
Saltar a: navegación, buscar
Road Works.svg Trabajo en proceso, espera cambios frecuentes. Tu ayuda y retroalimentación son bienvenidos.
Ver página de charlas.
Road Works.svg






Icon inter.gif

Recursos de la Web

{{{1}}}



Realizando la aplicacion de repartos

  • Las especificaciones según el enunciado del tema son
  • Se utilizará la API del servicio de tareas de Google (Google Tasks) para almacenar como listas de tareas la información de los repartos. Cada lista de tareas se corresponde en la aplicación con una lista de reparto, y cada una de sus tareas con un envío.
    • Para diferenciar una lista de otra, se le pone como parte del título la fecha del día en que se hará el reparto.
  • Para cada producto que se reparte se creará una tarea en la lista correspondiente. Esa tarea almacenará la dirección de envío y sus coordenadas. Para obtenerlas, y para mostrar su ubicación en un mapa, en el momento en que se introduzca la dirección se utilizará el servicio de geocodificación de Google (Google Geocoding).
  • Para optimizar la ruta que se ha de recorrer, se utilizará Google Directions. La idea es reorganizar de forma automática el orden de los productos que se van a repartir cada día de forma que se minimice la distancia recorrida.
  • Se visualizará en una nueva ventana el mapa correspondiente a las coordenadas de envío (google maps)
  • En total usaremos cuatro servicios
  1. Google Task usaremos la versión 1 v1. Decir que es una version beta y puede tener modificaciones que no mantengan compatibilidad
  2. Google Geocoding
  3. Google Directons
  4. Google Maps

Creando el proyecto en google

  • Un proyecto en google consiste en un conjunto de información relacionada con un desarrollo, donde espeficicas datos de autentificación Api que tu proyecto puede usar, puedes ver cuanto se utiliza tu aplicación, especificar accesos por url o por email y mas conceptos.
  • Google facilita una consola para este cometido donde puedes modificar, crear y/o visulizar esta información.
  • Para crear un proyecto, accedemos a la consola de google (previamente hay que identificarse si no lo has hecho antes).
https://console.developers.google.com/
  • Una vez dentro devemos crear una clave para acceder a nuestra aplicación. Estos conceptos están especificados en los apuntes.
  • Accedemos a google, (debemos crear una cuenta)
  • Cada uno que haga como quiera, podéis crearos un nuevo usuario en google para estas tareas e independizaros de vuestro usuario habitual.


Configurando servicios

  • Descargamos las librerías
  • Las podemos descargar en línea de comandos con el comando
 git clone https://github.com/google/google-api-php-client

Ŝi vamos a descargarlas al url especificado nos redirigen La página de google donde tenemos toda la información de las apis

https://developers.google.com/google-apps
  • Una vez descargados tendremos en la página el directorio google-api-php y dentro de él los directorios con los fuentes para usar las diferentes librerías
  • Especificamos en nuestro programa la ruta para esta ubicación
set_include_path("google-api-php-client/src/" . PATH_SEPARATOR . get_include_path());
  • Ahora incluimos las librerías necesarias
 require_once 'Geoogle/Client.php';
 require_once 'Google/Service/Tasks.php';
 require_once'Google/Service/Calendar.php';
*Para el tema de Ajax, descargamos la librería de xAjax que es lo que vamos a usar, y dejo en una carpeta llmada libs, dentro del directorio del proyecto las carpetas con sus contenidos de '''''xajax_core''''' y '''''xajax_js'''''
===Creando objeto Xajax===
*Ahora creamos el objeto xAjax 
<source lang=php>
 
// Creamos el objeto xajax
$xajax = new xajax('ajaxmaps.php');
 
// Configuramos la ruta en que se encuentra la carpeta xajax_js
$xajax->configure('javascript URI','http://localhost/Repartos/libs/');
 
// Y registramos las funciones que vamos a llamar desde JavaScript
//Estas funciones vienen implementadas en el fichero facilitado '''''ajaxmaps.php'''''
$xajax->register(XAJAX_FUNCTION,"obtenerCoordenadas");
$xajax->register(XAJAX_FUNCTION,"ordenarReparto");

Obejtos del api

  • Ahora creamos los objetos para usar el api de google
  • En esta parte hay alguna diferencia con lo facilitado en la plataforma pues usamos una versión diferentes
  • No hay demasiados cambios, pero sí alguno.
  • El objeto de Google_Cliente(), se va a instanciar para usar el protocolo oAuthw.0
  • Este protocolo lo usaremos para autentificarnos y autorizar
  • Ver el wiki de al lado. Autentificarnos consiste en que obligaremos al usuario de nuestra aplicación a que un tercer, en este caso google, le pida que se identifique con usuario y contraseña
  • Autorizar consiste en que el usuario de nuestra aplicación autoriza a la aplicación a acceder en su nombre a ciertos recursos privados que especificaremos con el método setScope, sin necesidad de que la aplicación conozca ni su usuario ni su contraseña.
  • Además de la aplicación web, tenemos un proyecto en google donde estás las API's configuradas para que nuestra aplicación las pueda utilizar
  • A continuación el proceso para este objetivo


// Creamos el objeto de la API de Google, primero un objeto de la clase Client
$cliente = new Google_Client();
 
 
// Y lo configuramos con los nuestros identificadores
 
$cliente->setApplicationName("Gestor de repartos");
 
//Establecemos las credenciales para este cliente
$cliente->setClientId($idCliente1);
$cliente->setClientSecret($passCliente1);
$cliente->setDeveloperKey($keyDeveloperNavegador1);
 
//Este método especificará la url donde queremos que google redirija la aplicación una vez que se haya logeado correctamente el usuario y que se hayan establecido de manera correcta las credenciales correspondiente. En nuestro caso será al mismo fichero.
$cliente->setRedirectUri($urlRedirect);
 
 
 
//Establecemos los permisos que queremos otorgar. En este caso queremos conceder acceso a tasks y a calendar para que el usuario pueda acceder a tareas y 
$cliente->setScopes(array('https://www.googleapis.com/auth/tasks','https://www.googleapis.com/auth/calendar'));
 
$cliente->setClientId('Aquí irá tu identificador de cliente');
$cliente->setClientSecret('Aquí tu clave secreta');
$cliente->setRedirectUri('http://localhost/dwes/ut8/tareas.php');
$cliente->setDeveloperKey('Aquí irá tu clave de la API de Google');
 
//Ahora crea os un objeto de la clase Servicio, que servirá para manejar las listas y sus tareas
 
$apitareas = new Google_Service($cliente);
  • Para asegurar de donde tomar los datos, aunque es muy intuitivo, vemos la siguiente imagen que se relaciona con los métodos que requieren sus datos.

Credenciales google.png

Usando Tasks