Este pacote torna o trabalho com um calendário do Google uma brisa. Uma vez configurado, você pode fazer estas:
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 ();A Spatie é uma agência WebDesign com sede em Antuérpia, Bélgica. Você encontrará uma visão geral de todos os nossos projetos de código aberto em nosso site.
Investimos muitos recursos para criar os melhores pacotes de código aberto de classe. Você pode nos apoiar comprando um de nossos produtos pagos.
Agradecemos muito por você nos enviar um cartão postal da sua cidade natal, mencionando qual dos nossos pacotes você está usando. Você encontrará nosso endereço em nossa página de contato. Publicamos todos os cartões postais recebidos em nossa parede virtual de cartão postal.
Você pode instalar o pacote via compositor:
composer require spatie/laravel-google-calendarVocê deve publicar a configuração com este comando:
php artisan vendor:publish --provider= " SpatieGoogleCalendarGoogleCalendarServiceProvider " Isso publicará um arquivo chamado google-calendar.php em seu diretório de configuração com estes conteúdos:
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 ' ),
];A primeira coisa que você precisará fazer é obter credenciais para usar a API do Google. Suponho que você já tenha criado uma conta do Google e esteja assinado. Vá para o Google API Console e clique em "Selecionar um projeto" no cabeçalho.

Em seguida, devemos especificar quais APIs o projeto pode consumir. No cabeçalho, selecione "Ativar APIs e serviços".

Na próxima página, pesquise "calendário" e selecione "API do Google Calendar API" na lista.

A partir daqui, pressione "Ativar" para ativar a API do Google Calendar para este projeto.

Agora que você criou um projeto que tem acesso à API do calendário, é hora de baixar um arquivo com essas credenciais. Clique em "Credenciais" na barra lateral e pressione o link "Credenciais no APIS & Services".

A partir desta página, abra a suspensão "Criar credenciais" e selecione "Chave da conta de serviço".

Na próxima tela, você pode dar um nome à conta de serviço. Você pode nomear tudo o que quiser. No ID da conta de serviço, você verá um endereço de e -mail. Usaremos este endereço de e -mail posteriormente neste guia. Selecione "JSON" como o tipo de chave e clique em "Criar" para baixar o arquivo json. Você receberá um aviso de que a conta de serviço não possui uma função, pode ignorar isso com segurança e criar a conta de serviço sem atribuir uma função.
Se você tiver acesso delegado em todo o domínio à conta de serviço e deseja se passar por uma conta de usuário, especifique o endereço de email da conta de usuário no arquivo de configuração.

Salve o JSON dentro do seu projeto Laravel no local especificado na tecla service_account_credentials_json do arquivo de configuração deste pacote. Como o arquivo JSON contém informações potencialmente sensíveis, não recomendo comprometi -las no seu repositório Git.
Agora que tudo está configurado no site da API, precisaremos configurar algumas coisas no site do Google Calendar. Vá para o Google Calendar e visualize as configurações do calendário com o qual você deseja trabalhar via PHP. No botão "Compartilhe com pessoas específicas", pressione o botão "Adicionar pessoas" e adicione o ID da conta de serviço exibido ao criar credenciais no site da API.


Role para baixo até a seção "Integrar Calendário" para ver o ID do calendário. Você precisa especificar esse ID no arquivo de configuração.

Este pacote suporta autenticação OAuth2. Isso permite que você se autentique com uma conta real do Google e crie e gerencie eventos com sua própria conta do Google.
A autenticação OAuth2 requer um arquivo de token, além do arquivo de credenciais. A maneira mais fácil de gerar esses dois arquivos é usando a ferramenta PHP QuickStart. Após este guia, gerará dois arquivos, credentials.json e token.json . Eles devem ser salvos em seu projeto como oauth-credentials.json e oauth-token.json , respectivamente. Verifique o arquivo de configuração neste pacote para obter detalhes exatos sobre onde salvar esses arquivos.
Para usar OAuth2, você também deve definir uma nova variável de ambiente no seu arquivo .env:
GOOGLE_CALENDAR_AUTH_PROFILE =oauthSe você estiver atualizando a partir de uma versão mais antiga deste pacote, precisará forçar uma publicação da configuração:
php artisan vendor:publish --provider= " SpatieGoogleCalendarGoogleCalendarServiceProvider " --forcePor fim, para uma experiência mais perfeita em seu aplicativo, em vez de usar a ferramenta QuickStart, você pode configurar uma tela de consentimento no console da API do Google. Isso permitiria que os usuários não técnicos do seu aplicativo gerassem facilmente seus próprios tokens. Isso é completamente opcional.
Você pode buscar todos os eventos simplesmente chamando Event::get(); Isso retornará todos os eventos do próximo ano. Um evento vem na forma de um objeto SpatieGoogleCalendarEvent .
A assinatura completa da função é:
public static function get( Carbon $ startDateTime = null , Carbon $ endDateTime = null , array $ queryParameters = [], string $ calendarId = null ): Collection Os parâmetros que você pode passar em $queryParameters estão listados na documentação na list nos documentos da API do Google Calendar.
Você pode usar esses getters para recuperar a data de início e término como instâncias de carbono:
$ events = Event:: get ();
$ events [ 0 ]-> startDate ;
$ events [ 0 ]-> startDateTime ;
$ events [ 0 ]-> endDate ;
$ events [ 0 ]-> endDateTime ; Você pode apenas uma nova SpatieGoogleCalendarEvent -Object
$ event = new Event ;
$ event -> name = ' A new event ' ;
$ event -> startDateTime = Carbon Carbon:: now ();
$ event -> endDateTime = Carbon Carbon:: now ()-> addHour ();
$ event -> save (); Você também pode ligar para create estaticamente:
Event:: create ([
' name ' => ' A new event ' ,
' startDateTime ' => Carbon Carbon:: now (),
' endDateTime ' => Carbon Carbon:: now ()-> addHour (),
]); Isso criará um evento com um horário de início e término específico. Se você deseja criar um evento de dia inteiro, deve usar startDate e endDate em vez do startDateTime e endDateTime .
$ event = new Event ;
$ event -> name = ' A new full day event ' ;
$ event -> startDate = Carbon Carbon:: now ();
$ event -> endDate = Carbon Carbon:: now ()-> addDay ();
$ event -> save ();Você pode criar um evento com base em uma string de texto simples 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 ' ); O Google atribui um ID exclusivo a cada evento. Você pode obter esse ID, obtendo eventos usando o método get e obtendo a propriedade id em um 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 idVocê pode usar este ID para buscar um único evento do Google:
Event:: find ( $ eventId ); Fácil, basta alterar algumas propriedades e ligar save() :
$ event = Event:: find ( $ eventId );
$ event -> name = ' My updated title ' ;
$ event -> save ();Como alternativa, você pode usar o método de atualização:
$ event = Event:: find ( $ eventId );
$ event -> update ([ ' name ' => ' My updated title ' ]);Nada para isso!
$ event = Event:: find ( $ eventId );
$ event -> delete ();Você pode definir URLs de origem em seus eventos, que só são visíveis para o criador do evento (consulte Docs para saber mais sobre a propriedade de origem). Esta função funciona apenas quando autenticada via OAuth.
$ yourEvent -> source = [
' title ' => ' Test Source Title ' ,
' url ' => ' http://testsource.url ' ,
];Você pode definir determinadas cores para seus eventos (ColorID 1 a 11). As possibilidades são limitadas às definições de cores da API do Google Calendar. Você pode encontrá -los aqui.
$ yourevent -> setColorId ( 11 );A API do Google Calendar oferece muitas opções. Este pacote não suporta todos eles. Por exemplo, eventos recorrentes não podem ser gerenciados corretamente com este pacote. Se você se mantiver na criação de eventos com um nome e uma data, você deve ficar bem.
A única grande diferença entre v1 e v2 é que, sob o capô, o Google API V2 é usado em vez de V1. Aqui estão as etapas necessárias para atualizar:
laravel-google-calendar para google-calendarclient_secret_json para service_account_credentials_json Consulte Changelog para obter mais informações sobre o que mudou recentemente.
composer test Por favor, consulte a contribuição para obter detalhes.
Se você descobrir algum problema relacionado à segurança, envie um email para [email protected] em vez de usar o rastreador de problemas.
Um grande obrigado a Sebastiaan Luca por sua grande ajuda para criar v2 deste pacote.
A licença do MIT (MIT). Consulte o arquivo de licença para obter mais informações.