Google API

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Steven van E

Steven van E

26/10/2016 10:14:26
Quote Anchor link
Ik hoop dat hier mensen aanwezig zijn met Google API ervaring :)

Met behulp van de Google Calendar API probeer ik via de Oauth2 authenticatie connectie te maken met mijn kalenders.

Hiervoor heb ik de volgende stappen gevolgd:

- App registreren via de Google Developers console
- De client library (google-api-php-client) geïnstalleerd via composer
- Onderstaand script geplaatst in de "vendor" map

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
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
    
    require_once 'autoload.php';
    require('google/apiclient-services/src/Google/Service/Oauth2.php');
    session_start();

    // ********************************************************  //
    // Get these values from https://console.developers.google.com
    // Be sure to enable the Analytics API
    // ********************************************************    //
    $client_id = 'myclientid';
    $client_secret = 'myclientsecret';
    $redirect_uri = 'https://domain.nl/dev/vendor/google/apiclient-services/src/Google/Service/Oauth2.php'; //identical as in Google console

    $client = new Google_Client();
    $client->setApplicationName("Client_Library_Examples");
    $client->setClientId($client_id);
    $client->setClientSecret($client_secret);
    $client->setRedirectUri($redirect_uri);
    $client->setAccessType('offline');   // Gets us our refreshtoken

    $client->setScopes(array('https://www.googleapis.com/auth/calendar.readonly'));


    //For loging out.
    if (isset($_GET['logout'])) {
         unset($_SESSION['token']);
    }


    // Step 2: The user accepted your access now you need to exchange it.
    if (isset($_GET['code'])) {

    $client->authenticate($_GET['code']);  
    $_SESSION['token'] = $client->getAccessToken();
    $redirect = 'https://' . $_SERVER['HTTP_HOST'] . $_SERVER['PHP_SELF'];
    header('Location: ' . filter_var($redirect, FILTER_SANITIZE_URL));
    }

    // Step 1:  The user has not authenticated we give them a link to login    
    if (!isset($_SESSION['token'])) {

    $authUrl = $client->createAuthUrl();

    print "Connect Me!";
    }    


    // Step 3: We have access we can now create our service
    if (isset($_SESSION['token'])) {
    $client->setAccessToken($_SESSION['token']);
    print "LogOut
";    

    $service = new Google_Service_Calendar($client);    

    $calendarList  = $service->calendarList->listCalendarList();;

    while(true) {
        foreach ($calendarList->getItems() as $calendarListEntry) {

            echo $calendarListEntry->getSummary()."
\n";


Als ik het script aanroep krijg ik een venster van Google om toegang te verlenen tot mijn Google account. Zodra ik op accepteer klik krijg ik de volgende melding:

Quote:
Fatal error: Class 'Google_Service' not found in /home/user/domains/domain.nl/private_html/dev/vendor/google/apiclient-services/src/Google/Service/Oauth2.php on line 32


Oplossingen volgens mijn Google onderzoek:

- Autoload pad juist instellen (is correct)
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
require_once 'autoload.php';

- Nieuwe PHP versie draaien (reeds 5.6 + 7.1 geprobeerd)
- Library van composer.json controleren (is correct)

Iemand enig idee?

Dank!
Gewijzigd op 26/10/2016 10:17:13 door Steven van E
 
PHP hulp

PHP hulp

27/04/2024 00:49:48
 
Victor -

Victor -

28/10/2016 10:17:27
Quote Anchor link
Ook `composer install` gedaan op je server? Of de `vendor` map geüpload?
 
Steven van E

Steven van E

28/10/2016 10:30:26
Quote Anchor link
Victor - op 28/10/2016 10:17:27:
Ook `composer install` gedaan op je server? Of de `vendor` map geüpload?


Hi Victor,

Dank voor je reactie.

Ik heb Composer als volgt geïnstalleerd: https://getcomposer.org/download/

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
php -r "copy('https://getcomposer.org/installer', 'composer-setup.php');"
php -r "if (hash_file('SHA384', 'composer-setup.php') === 'e115a8dc7871f15d853148a7fbac7da27d6c0030b848d9b3dc09e2a0388afed865e6a3d6b3c0fad45c48e2b5fc1196ae') { echo 'Installer verified'; } else { echo 'Installer corrupt'; unlink('composer-setup.php'); } echo PHP_EOL;"
php composer-setup.php
php -r "unlink('composer-setup.php');"


Daarna starten:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
php bin/composer


Vervolgens de installatie van de google api client gevolgd via https://github.com/google/google-api-php-client

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
composer require google/apiclient:^2.0


Overigens krijg ik precies dezelfde error als ik de google-api-php-client handmatig upload (https://github.com/google/google-api-php-client/releases).

Enig idee :)?
Gewijzigd op 28/10/2016 10:33:07 door Steven van E
 
Victor -

Victor -

28/10/2016 10:34:34
Quote Anchor link
Hmm een wilde gok, haal je script eens uit de vendor map, en zet hem in dezelfde map als waar de vendor map staat? En verander dan require_once 'autoload.PHP' naar require_once 'vendor/autoload.php'

(En verwijder regel 3)
Gewijzigd op 28/10/2016 10:35:30 door Victor -
 
Steven van E

Steven van E

28/10/2016 10:40:31
Quote Anchor link
Victor - op 28/10/2016 10:34:34:
Hmm een wilde gok, haal je script eens uit de vendor map, en zet hem in dezelfde map als waar de vendor map staat? En verander dan require_once 'autoload.PHP' naar require_once 'vendor/autoload.php'

(En verwijder regel 3)


Bedankt voor het meedenken, heb het script verplaatst naar de dev map, require_once aangepast en regel 3 verwijderd. Helaas zelfde resultaat.

Suggesties?
 



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.