Este paquete hace que trabajar con un calendario de Google sea muy fácil. Una vez que se ha configurado, puede hacer estas cosas:
use Spatie GoogleCalendar Event ;
// create a new event
$ event = new Event ;
$ event -> name = ' A new event ' ;
$ event -> description = ' Event description ' ;
$ event -> startDateTime = Carbon Carbon:: now ();
$ event -> endDateTime = Carbon Carbon:: now ()-> addHour ();
$ event -> addAttendee ([
' email ' => ' [email protected] ' ,
' name ' => ' John Doe ' ,
' comment ' => ' Lorum ipsum ' ,
' responseStatus ' => ' needsAction ' ,
]);
$ event -> addAttendee ([ ' email ' => ' [email protected] ' ]);
$ event -> addMeetLink (); // optionally add a google meet link to the event
$ event -> save ();
// get all future events on a calendar
$ events = Event:: get ();
// update existing event
$ firstEvent = $ events -> first ();
$ firstEvent -> name = ' updated name ' ;
$ firstEvent -> save ();
$ firstEvent -> update ([ ' name ' => ' updated again ' ]);
// create a new event
Event:: create ([
' name ' => ' A new event ' ,
' startDateTime ' => Carbon Carbon:: now (),
' endDateTime ' => Carbon Carbon:: now ()-> addHour (),
]);
// delete an event
$ event -> delete ();Spatie es una agencia de diseño web con sede en Amberes, Bélgica. Encontrará una descripción general de todos nuestros proyectos de código abierto en nuestro sitio web.
Invertimos muchos recursos en la creación de los mejores paquetes de código abierto en clase. Puede apoyarnos comprando uno de nuestros productos pagados.
Apreciamos encarecidamente que nos envíe una postal desde su ciudad natal, mencionando cuál de nuestros paquetes está utilizando. Encontrará nuestra dirección en nuestra página de contacto. Publicamos todas las postales recibidas en nuestro muro de postal virtual.
Puede instalar el paquete a través del compositor:
composer require spatie/laravel-google-calendarDebe publicar la configuración con este comando:
php artisan vendor:publish --provider= " SpatieGoogleCalendarGoogleCalendarServiceProvider " Esto publicará un archivo llamado google-calendar.php en su directorio de configuración con estos contenidos:
return [
' default_auth_profile ' => env ( ' GOOGLE_CALENDAR_AUTH_PROFILE ' , ' service_account ' ),
' auth_profiles ' => [
/*
* Authenticate using a service account.
*/
' service_account ' => [
/*
* Path to the json file containing the credentials.
*/
' credentials_json ' => storage_path ( ' app/google-calendar/service-account-credentials.json ' ),
],
/*
* Authenticate with actual google user account.
*/
' oauth ' => [
/*
* Path to the json file containing the oauth2 credentials.
*/
' credentials_json ' => storage_path ( ' app/google-calendar/oauth-credentials.json ' ),
/*
* Path to the json file containing the oauth2 token.
*/
' token_json ' => storage_path ( ' app/google-calendar/oauth-token.json ' ),
],
],
/*
* The id of the Google Calendar that will be used by default.
*/
' calendar_id ' => env ( ' GOOGLE_CALENDAR_ID ' ),
];Lo primero que tendrá que hacer es obtener credenciales para usar la API de Google. Supongo que ya ha creado una cuenta de Google y ha iniciado sesión. Dirígete a la consola de la API de Google y haga clic en "Seleccione un proyecto" en el encabezado.

A continuación, debemos especificar qué API puede consumir el proyecto. En el encabezado, seleccione "Habilitar API y servicios".

En la página siguiente, busque "Calendario" y seleccione "API de Google Calendar" de la lista.

Desde aquí, presione "Habilitar" para habilitar la API de Google Calendar para este proyecto.

Ahora que ha creado un proyecto que tiene acceso a la API del calendario, es hora de descargar un archivo con estas credenciales. Haga clic en "Credenciales" en la barra lateral y luego presione el enlace "Credenciales en API y Servicios".

Desde esta página, abra el desplegable "Crear credenciales" y seleccione "Clave de cuenta de servicio".

En la siguiente pantalla, puede darle un nombre a la cuenta de servicio. Puedes nombrarlo cualquier cosa que quieras. En la ID de cuenta de servicio verá una dirección de correo electrónico. Usaremos esta dirección de correo electrónico más adelante en esta guía. Seleccione "JSON" como tipo de clave y haga clic en "Crear" para descargar el archivo JSON. Obtendrá una advertencia de que la cuenta de servicio no tiene un rol, puede ignorarlo de manera segura y crear la cuenta de servicio sin asignar un rol.
Si ha delegado el acceso de todo el dominio a la cuenta de servicio y desea hacerse pasar por una cuenta de usuario, especifique la dirección de correo electrónico de la cuenta de usuario en el archivo de configuración.

Guarde el JSON dentro de su proyecto Laravel en la ubicación especificada en la tecla service_account_credentials_json del archivo de configuración de este paquete. Debido a que el archivo JSON contiene información potencialmente confidencial, no recomiendo comprometerlo con su repositorio Git.
Ahora que todo está configurado en el sitio API, necesitaremos configurar algunas cosas en el sitio del calendario de Google. Dirígete al calendario de Google y vea la configuración del calendario con el que desea trabajar a través de PHP. En la pestaña "Compartir con personas específicas", presione el botón "Agregar personas" y agregue la ID de cuenta de servicio que se muestra al crear credenciales en el sitio API.


Desplácese hacia abajo hasta la sección "Integrar calendario" para ver la identificación del calendario. Debe especificar esa ID en el archivo de configuración.

Este paquete admite la autenticación OAuth2. Esto le permite autenticarse con una cuenta real de Google y crear y administrar eventos con su propia cuenta de Google.
La autenticación OAUTH2 requiere un archivo token, además del archivo de credenciales. La forma más fácil de generar ambos archivos es utilizando la herramienta PHP QuickStart. Seguir esta guía generará dos archivos, credentials.json y token.json . Deben salvarse a su proyecto como oauth-credentials.json y oauth-token.json , respectivamente. Verifique el archivo de configuración en este paquete para obtener detalles exactos sobre dónde guardar estos archivos.
Para usar OAUTH2, también debe establecer una nueva variable de entorno en su archivo .env:
GOOGLE_CALENDAR_AUTH_PROFILE =oauthSi está actualizando desde una versión anterior de este paquete, deberá forzar una publicación de la configuración:
php artisan vendor:publish --provider= " SpatieGoogleCalendarGoogleCalendarServiceProvider " --forceFinalmente, para una experiencia más perfecta en su aplicación, en lugar de usar la herramienta QuickStart, puede configurar una pantalla de consentimiento en la consola de la API de Google. Esto permitiría que los usuarios no técnicos de su aplicación generen fácilmente sus propios tokens. Esto es completamente opcional.
Puede obtener todos los eventos simplemente llamando Event::get(); Esto devolverá todos los eventos del próximo año. Un evento viene en forma de un objeto SpatieGoogleCalendarEvent .
La firma completa de la función es:
public static function get( Carbon $ startDateTime = null , Carbon $ endDateTime = null , array $ queryParameters = [], string $ calendarId = null ): Collection Los parámetros que puede pasar en $queryParameters se enumeran en la list de documentación en la lista de Google Calendar API.
Puede usar estos captadores para recuperar la fecha de inicio y finalización como instancias de carbono:
$ events = Event:: get ();
$ events [ 0 ]-> startDate ;
$ events [ 0 ]-> startDateTime ;
$ events [ 0 ]-> endDate ;
$ events [ 0 ]-> endDateTime ; Puedes simplemente nuevo un SpatieGoogleCalendarEvent -object
$ event = new Event ;
$ event -> name = ' A new event ' ;
$ event -> startDateTime = Carbon Carbon:: now ();
$ event -> endDateTime = Carbon Carbon:: now ()-> addHour ();
$ event -> save (); También puede llamar create estáticamente:
Event:: create ([
' name ' => ' A new event ' ,
' startDateTime ' => Carbon Carbon:: now (),
' endDateTime ' => Carbon Carbon:: now ()-> addHour (),
]); Esto creará un evento con un tiempo de inicio y finalización específico. Si desea crear un evento de día completo, debe usar startDate y endDate en lugar de startDateTime y endDateTime .
$ event = new Event ;
$ event -> name = ' A new full day event ' ;
$ event -> startDate = Carbon Carbon:: now ();
$ event -> endDate = Carbon Carbon:: now ()-> addDay ();
$ event -> save ();Puede crear un evento basado en una cadena de texto simple como esta:
$ event = new Event ();
$ event -> quickSave ( ' Appointment at Somewhere on April 25 10am-10:25am ' );
// statically
Event:: quickCreate ( ' Appointment at Somewhere on April 25 10am-10:25am ' ); Google asigna una identificación única a cada evento. Puede obtener esta identificación obteniendo eventos utilizando el método get y obteniendo la propiedad id en un SpatieGoogleCalendarEvent -object:
// get the id of the first upcoming event in the calendar .
$ eventId = Event:: get ()-> first ()-> id ;
// you can also get the id after creating the event , then you can save it to database .
$ event = new Event ;
$ newEvent = $ event -> save ();
echo $ newEvent -> id ; // display the event idPuede usar esta identificación para obtener un solo evento de Google:
Event:: find ( $ eventId ); Fácil, solo cambie algunas propiedades y llame save() ::
$ event = Event:: find ( $ eventId );
$ event -> name = ' My updated title ' ;
$ event -> save ();Alternativamente, puede usar el método de actualización:
$ event = Event:: find ( $ eventId );
$ event -> update ([ ' name ' => ' My updated title ' ]);¡Nada para eso!
$ event = Event:: find ( $ eventId );
$ event -> delete ();Puede establecer URL de origen en sus eventos, que solo son visibles para el creador del evento (consulte los documentos para obtener más información sobre la propiedad de origen). Esta función solo funciona cuando se autentica a través de OAuth.
$ yourEvent -> source = [
' title ' => ' Test Source Title ' ,
' url ' => ' http://testsource.url ' ,
];Puede establecer ciertos colores para sus eventos (ColorId 1 a 11). Las posibilidades se limitan a las definiciones de color de la API del calendario de Google. Puedes encontrarlos aquí.
$ yourevent -> setColorId ( 11 );La API de Google Calendar proporciona muchas opciones. Este paquete no los admite a todos. Por ejemplo, los eventos recurrentes no se pueden administrar correctamente con este paquete. Si te apegas a crear eventos con un nombre y una fecha, deberías estar bien.
La única diferencia importante entre v1 y v2 es que se usa bajo el capó Google API V2 en lugar de V1. Estos son los pasos necesarios para actualizar:
laravel-google-calendar a google-calendarclient_secret_json a service_account_credentials_json Consulte ChangeLog para obtener más información sobre lo que ha cambiado recientemente.
composer test Consulte contribuyendo para obtener más detalles.
Si descubre algún problema relacionado con la seguridad, envíe un correo electrónico a [email protected] en lugar de usar el rastreador de problemas.
Muchas gracias a Sebastiaan Luca por su gran ayuda para crear V2 de este paquete.
La licencia MIT (MIT). Consulte el archivo de licencia para obtener más información.