Google Calendar uitlezen

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Ramon van Dongen

Ramon van Dongen

12/07/2016 16:38:53
Quote Anchor link
Ha php-ers,

Een hele tijd geleden heb ik een scriptje voor een site gemaakt om een Google Calendar uit te lezen en in de layout van de website weer te geven. Dat werkte via XML perfect... totdat Google besloot dit niet meer toe te staan, ze zeggen omdat er te weinig gebruikt van werd gemaakt.

Jammer, want het was voor de beheerder eenvoudig bij te houden. Is heel handig te synchroniseren met telefoons en andere devices.

Google biedt nu de Google Calendar API aan. https://developers.google.com/google-apps/calendar/quickstart/php
Maar ik kom hier niet echt aan uit.

Het is een openbare agenda dus d.m.v. een iframe het op een website laten zien moet geen probleem zijn.
Met de Google API kom ik op pagina's met uitleg over OAuth 2.0 etc.

Weet iemand of er gewoon een simpele methode is om enkele de agenda uit te lezen?
 
PHP hulp

PHP hulp

08/05/2021 21:44:34
 
- Ariën -
Beheerder

- Ariën -

12/07/2016 16:42:59
Quote Anchor link
Waar loop je precies op vast?
 
Ramon van Dongen

Ramon van Dongen

12/07/2016 16:43:36
Quote Anchor link
Ik denk al iets gevonden te hebben.... via http://www.google.com/calendar/ical/{OWNER}/public/basic.ics kan een ics bestand opgevraagd worden. Dan is het enkel het ics bestand omzetten naar variabelen... eens proberen

Toevoeging op 12/07/2016 16:44:57:

- Ariën - op 12/07/2016 16:42:59:
Waar loop je precies op vast?


Hoi Ariën, op het feit dat het van een scriptje van slechts enkele regels (alleen XML uitlezen) nu opeens naar een hele libary gaat. Daarmee kunnen ook agendapunten etc toegevoegd worden.
Het komt op mij over alsof het veel te moeilijk is voor wat ik wil en het dus veel beknopter/simpeler moet kunnen.
 
- Ariën -
Beheerder

- Ariën -

12/07/2016 16:53:20
Quote Anchor link
Google doet er alles eraan om de veiligheid te verbeteren. Ik weet niet hoe het eerst werkte, maar voorheen was het bij API's vaak een kwestie van een veiligheidscode in een URL meegeven. Dit idee is inmiddels zo achterhaald dat er nu gebruik wordt gemaakt van oAuth, en daar zitten nu eenmaal een hoop stappen in die gevolgd moeten worden om een goede, veilige en betrouwbare inlog mogelijk te maken. Gelukkig zijn daar weer libraries voor in het leven geroepen. Die zorgen ervoor dat je je op een juiste manier autenticeert net zoals je bij Google inlogt voor Youtube, Gmail etc...
 
Ramon van Dongen

Ramon van Dongen

12/07/2016 17:23:02
Quote Anchor link
Dat is ook heel goed dat ze veel waarde hechten aan de veiligheid. Zeker als het mogelijk is met de API om zaken toe te voegen.

Het ging mij gewoon om een openbare agenda uitlezen.

Heb het nu op deze manier gedaan:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<?php

$ical
= file('http://www.google.com/calendar/ical/******@gmail.com/public/basic.ics');
$i = 0;
$agenda = array();

foreach($ical AS $line){
    if(trim($line) == 'BEGIN:VEVENT'){
        $i++;
    }
    
    
    if(substr($line,0,8) == 'DTSTART:'){
        $agenda[$i]['begin'] = substr($line,8,4).'-'.substr($line,12,2).'-'.substr($line,14,2).' '.substr($line,17,2).':'.substr($line,19,2).':00';
    }

    
    if(substr($line,0,6) == 'DTEND:'){
        $agenda[$i]['einde'] = substr($line,6,4).'-'.substr($line,10,2).'-'.substr($line,12,2).' '.substr($line,15,2).':'.substr($line,17,2).':00';
    }

    
    if(substr($line,0,9) == 'LOCATION:'){
        $agenda[$i]['locatie'] = str_replace('\\', '',trim(str_replace('LOCATION:','',$line)));
    }

    
    if(substr($line,0,8) == 'SUMMARY:'){
        $agenda[$i]['naam'] = trim(str_replace('SUMMARY:','',$line));
    }
}

?>


In $agenda staat nu alles wat ik nodig heb!

Toevoeging op 12/07/2016 17:32:53:

Correctie, met deze code wordt ook rekening gehouden met de tijdzones:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<?php
$ical
= file('http://www.google.com/calendar/ical/*****@gmail.com/public/basic.ics');
$i = 0;
$agenda = array();

foreach($ical AS $line){
    if(trim($line) == 'BEGIN:VEVENT'){
        $i++;
    }
    
    if(substr($line,0,8) == 'DTSTART:'){
        $agenda[$i]['begin'] = strtotime(str_replace('DTSTART:','',$line));
        date_default_timezone_set('Europe/Amsterdam');
        $agenda[$i]['begin'] = date('Y-m-d H:i:s', $agenda[$i]['begin']);
    }

    if(substr($line,0,6) == 'DTEND:'){
        $agenda[$i]['eind'] = strtotime(str_replace('DTEND:','',$line));
        date_default_timezone_set('Europe/Amsterdam');
        $agenda[$i]['eind'] = date('Y-m-d H:i:s', $agenda[$i]['eind']);    
    }

    if(substr($line,0,9) == 'LOCATION:'){
        $agenda[$i]['locatie'] = str_replace('\\', '',trim(str_replace('LOCATION:','',$line)));
    }

    if(substr($line,0,8) == 'SUMMARY:'){
        $agenda[$i]['naam'] = trim(str_replace('SUMMARY:','',$line));
    }
}

?>
Gewijzigd op 12/07/2016 17:33:28 door Ramon van Dongen
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.