Ankündigung

Einklappen
Keine Ankündigung bisher.

Google Calendar - update für "neue" GoogleAPI

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #61
    Error

    Hallo, habe auch das Problem mit google_2.php

    Code:
    root@smarthome:/usr/smarthome/googlecal# php -q google_2.php
    PHP Notice:  Undefined property: stdClass::$refresh_token in /usr/smarthome/googlecal/google_2.php on line 20
    pho ist aktuell.

    Hab schon alle bereits geposteten Lösungsvorschläge ausprobiert.

    Danke für eure Hilfe.

    Kommentar


      #62
      Kalender wir nicht angezeigt

      So, mein voriges Problem hab ich lösen können.

      Leider wird mir jetzt der Kalender in der Smartvisu nicht angezeigt .
      Habe googlev3 in der Config ausgewählt und gespeichert.


      Wenn ich googlev3.php manuell ausführe kommt folgendes:

      Code:
      admin@smarthome:/var/www/smartvisu/lib/calendar/service$ php -q googleV3.php
      [{"title":"Calendar: Google","text":"Calendar read request failed!"}]
      Als calendar_id hab ich meine gmail Adresse eingetragen.

      Kommentar


        #63
        Einen grossen Danke an die Community, es funktioniert wieder alles wie es soll

        Danke und Gruss Jens

        Kommentar


          #64
          Geht wieder

          Zitat von DiePolle Beitrag anzeigen
          So, mein voriges Problem hab ich lösen können.

          Leider wird mir jetzt der Kalender in der Smartvisu nicht angezeigt .
          Habe googlev3 in der Config ausgewählt und gespeichert.


          Wenn ich googlev3.php manuell ausführe kommt folgendes:

          Code:
          admin@smarthome:/var/www/smartvisu/lib/calendar/service$ php -q googleV3.php
          [{"title":"Calendar: Google","text":"Calendar read request failed!"}]
          Als calendar_id hab ich meine gmail Adresse eingetragen.
          Hallo,

          ich hatte ähnliche Probleme.
          Ich bin einfach noch einmal jeden einzelnen Schritt durchgegangen.
          google_1.php
          google_2.php
          auch googleV3.php habe ich offline mit php -q googleV3.php aufgerufen. im Fehlerfall war die Rückmeldung die gleiche wie bei Dir. Als es dann ging, gings auch nach Kopieren in die Visu.
          Bei mir war übrigens der AuthCode auf einmal ein anderer als beim ersten Test im Januar!!!

          Beste Grüße,
          Jürgen

          Kommentar


            #65
            Zitat von klotzek Beitrag anzeigen
            Hallo,

            ich hatte ähnliche Probleme.
            Ich bin einfach noch einmal jeden einzelnen Schritt durchgegangen.
            google_1.php
            google_2.php
            auch googleV3.php habe ich offline mit php -q googleV3.php aufgerufen. im Fehlerfall war die Rückmeldung die gleiche wie bei Dir. Als es dann ging, gings auch nach Kopieren in die Visu.
            Bei mir war übrigens der AuthCode auf einmal ein anderer als beim ersten Test im Januar!!!

            Beste Grüße,
            Jürgen
            Hab alles nochmal durchgespielt, leider hat sich an der Fehlermeldung nichts geändert.

            Kommentar


              #66
              Funktioniert bei mir unter Debian auch einwandfrei.

              Hatte auch kurz das Problem mit der google_2.php Zeile 20
              Lag bei mir daran das ich bei Variablen für die redirect_url ein Leerzeichen vor dem Hochkomma hatte.

              Gruß

              Michael
              Meine Installation: VM Debian Buster SH NG 1.8.1, SmartVISU 3.0, KNX, DMX, 1-wire, Fortigate 30E IPS, VMware vSphere 6.7

              Kommentar


                #67
                Hallo,
                ich hänge mit dem wohl bekanntem Problem.
                Bitte schaut einmal, evtl. habe ich Felder falsch verstanden oder falsch eingetragen!

                Einige Daten habe ich per xxx verändert, aber Ihr solltet die Zuordnung schon erkennen.

                Danke für jegliche Hilfe!

                Wolfgang


                Projekt-ID: strong-market-XXX12
                Projektnummer: 360XXXX75035
                Projektname: API-Smarthome

                https://accounts.google.com/o/oauth2/auth?
                response_type=code
                client_id= 360XXXX75035-i64io3lunikg6m2bsgp275a1jo5epe0i.apps.googleuserco ntent.com
                client_schlüssel: rwnCCbdx0M-FRMXXXX-CROdn
                redirect_uri= urn:ietf:wgauth:2.0ob

                API-Schlüssel= AIzaSyAjnyjNxgAXXXXXXXWpF9aS73wpMxVvdTE Wozu brauche ich den API-Schlüssel?





                scope=https%3A%XXXXXwww.google.com%2Fcalendar%2Ffe eds%2F Der Name Scope taucht nie mehr auf, brauchen wir den?


                Code aus Google_1.php
                letzter Versuch:
                4/kuzJMKeC_ZZflGowXXXXXXzbj3b0XJ2lYDJ_N9MQg2fQ.orXD6 LbmwY0bYFZr95uygvWLT2q3mAI

                code aus google_2.php

                PHP-Code:
                <?php
                $url 
                'https://accounts.google.com/o/oauth2/token';
                $post_data = array(
                                    
                'code'          =>   '4/kuzJMKeC_ZZflGowXXXXXzbj3b0XJ2lYDJ_N9MQg2fQ.orXD6LbmwY0bYFZr95uygvWLT2q3mAI',    // insert the code here that was shown after calling the URL from google_1.php
                                    
                'client_id'     =>   '360XXXXX75035-i64io3lunikg6m2bsgp275a1jo5epe0i.apps.googleusercontent.com',    // insert your client ID here
                                    
                'client_secret' =>   'rwnCCbdx0M-FRMXXXX-CROdn',    // insert your client secret here
                                    
                'redirect_uri'  =>   'urn:ietf:wg:oauth:2.0:oob',    //insert your redirect URI here (first line only)
                                    
                'grant_type'    =>   'authorization_code'
                                    
                );
                $ch curl_init();

                curl_setopt($chCURLOPT_URL$url);
                curl_setopt($chCURLOPT_POST1);
                curl_setopt($chCURLOPT_POSTFIELDS$post_data);
                curl_setopt($chCURLOPT_RETURNTRANSFERtrue);

                $result curl_exec($ch);
                $token json_decode($result);

                echo 
                $token->refresh_token "\n";
                ?>

                Das ist die Fehlermeldung! Line 20 ist die echo -Zeile
                php -q google_2.php
                PHP Notice: Undefined property: stdClass::$refresh_token in /var/www/smartVISU/lib/calendar/service/google_2.php on line 20

                Alle apt-get laut vorherigen Anweisungen ausgeführt !.
                Zuletzt geändert von schloessl; 27.03.2015, 16:43.

                Kommentar


                  #68
                  Hallo Wolfgang,
                  gib doch mal am Ende von google_2.php (ggf. das andere echo auskommentieren) das Ergebnis des curl-aufrufs aus mit

                  Code:
                  echo $result;
                  Falls da ne Fehlermeldung kommt, einfach nochmal mit Schritt 1 starten...

                  auch sieht die client-id irgendwie eigenartig aus, da sollte kein Zeilenumbruch im String sein (kann aber auch durch die Anzeige hier im Forum kommen...)

                  Viele Grüße - Carsten

                  Kommentar


                    #69
                    Halo Carsten,
                    danke für Deine Antwort!

                    Auf die Schnelle getestet:
                    php -q google_2.php
                    {
                    "error" : "invalid_grant"
                    "error_description" : "Code was already redeemed."

                    Wer zum Teufel ist "grant".
                    Ich werde später noch einmal ab Schritt 1 beginnen.

                    Sorry, die 2. Fehlerzeile hab ich übersehen. Damit klärt sich der Grant!

                    Viele Grüße und ein schönes Wochennende!
                    Wolfgang
                    Zuletzt geändert von schloessl; 28.03.2015, 12:30. Grund: 2.Zeile übersehen

                    Kommentar


                      #70
                      Hi Leute,

                      hab jetzt seit der Sommerzeit alle meine Termine von 23.oo Uhr bis 23.00 Uhr drin..
                      bei Google sind sie aber noch von 0-0 Uhr eingetragen.. Verändern und neu Abspeichern
                      hat nicht geholfen..

                      ist sicher nur ne Kleinigekeit.. habt ihr einen Tipp ?


                      Gruß Martin

                      Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                      Kommentar


                        #71
                        Hallo,

                        ist bei mir genauso.
                        Was ich schon geprüft habe:

                        Zeitzone in meinem Google Kalender ist (GMT +01:00) Berlin.

                        etc/smarthome.conf: tz = 'Europe/Berlin'

                        Rechts oben unter dem Smartvisu-Logo wird die richtige Zeit angezeigt.

                        Auf dem Raspi:
                        admin@smarthome:/usr/smarthome$ date
                        Tue Mar 31 11:43:49 CEST 2015


                        Gruß
                        Markus

                        Kommentar


                          #72
                          Tag zusammen,

                          hab den Thread gespannt verfolgt und googleV3.php soweit zum Laufen bekommen das ich beim manuellen aufrufen dort nun meine Kalendereinträge in einem schönen JSON sehe. Soweit prima umgesetzt, danke dafür :-)

                          Leider schaffen es die Werte nicht in die Visu, Code hier:
                          Code:
                          {% import "calendar.html" as calendar %}
                          {{ calendar.list('calendarlist1', 'Calendar', 3) }}
                          Im Debug Log seh ich leider keinerlei Meldungen dazu.
                          Jemand eine Idee?

                          GEFIXT:
                          War natürlich mein Fehler: Am Ende hatte ich vergessen den Webserver zu restarten nachdem ich php curl installiert hab ...
                          Läuft jetzt wunderbar, danke :-)
                          Zuletzt geändert von moeoszilago; 06.04.2015, 08:43.

                          Kommentar


                            #73
                            Noch ein kleiner Fix um die max. Anzahl Einträge auch aus der Visu heraus wieder konfigurierbar zu machen (also auf z.B. 5 zu begrenzen anstatt wie bisher in googleV3.php immer fest max. 10 aus dem Google Calender zu holen):

                            PHP-Code:
                             <?php
                            /**
                             * -----------------------------------------------------------------------------
                             * @package     smartVISU
                             * @author      Martin Gleiß, updated by Carsten Gotschlich got google API V3
                             * @copyright   2012
                             * @license     GPL [http://www.gnu.de]
                             * -----------------------------------------------------------------------------
                             */

                             // https://knx-user-forum.de/smartvisu/39374-google-calendar-update-fuer-neue-googleapi.html

                            require_once '../../../lib/includes.php';
                            require_once 
                            const_path_system.'calendar/calendar.php';

                            /**
                             * This class reads a google calenda
                             */
                            class calendar_google extends calendar
                            {

                                
                            /**
                                 * initialization of some parameters
                                 */
                                
                            public function init($request)
                                {
                                    
                            parent::init($request);

                                    
                            $this->max_results = (int)$request['count'];
                                }

                                
                            /**
                                 * Check if the cache-file exists
                                 */
                                
                            public function run()
                                {
                                    
                            //---------------------------------------------------------------------
                                    // let's define some parameters - they need to be fetched manually
                                    //---------------------------------------------------------------------
                                    
                            $client_id      =   '';  // put your clientID here - from Google website
                                    
                            $client_secret  =   '';  // put your client Secret here - from Google WebSite
                                    
                            $redirect_uri   =   '';     // put you redirect URI here from Google Website - only first line !

                                    
                            $refresh_token  =   '';  // Put your google refresh token here - from other PHP script
                                    
                            $calendar_id ''// get it this way: http://googleappstroubleshootinghelp.blogspot.de/2012/09/how-to-find-calendar-id-of-google.html
                                    //---------------------------------------------------------------------
                                    // get access token first
                                    
                            $token_url 'https://accounts.google.com/o/oauth2/token';
                                    
                            $post_data = array(
                                                    
                            'client_secret' =>   $client_secret,
                                                    
                            'grant_type'    =>   'refresh_token',
                                                    
                            'refresh_token' =>   $refresh_token,
                                                    
                            'client_id'     =>   $client_id
                                                    
                            );
                                    
                            $ch curl_init();

                                    
                            curl_setopt($chCURLOPT_URL$token_url);
                                    
                            curl_setopt($chCURLOPT_POST1);
                                    
                            curl_setopt($chCURLOPT_POSTFIELDS$post_data);
                                    
                            curl_setopt($chCURLOPT_RETURNTRANSFERtrue);

                                    
                            $result curl_exec($ch);
                                    
                            $token_object json_decode($result);
                                    
                            $access_token $token_object->access_token;

                                    
                            //---------------------------------------------------------------------
                                    // so now we have an access-token, let's use it to access the calendar
                                    
                            $context stream_context_create(array('http' => array('method' => "GET"'header' => "Authorization: OAuth " $access_token)));
                                    
                            $resturl 'https://www.googleapis.com/calendar/v3/colors';
                                    
                            $content = @file_get_contents($resturlfalse$context);
                                    
                            $colors = array();
                                    if (
                            $content !== false)
                                    {
                                        
                            $result json_decode($content,true);
                                        
                            $colors $result["event"];
                            //            var_dump($colors);
                                    
                            }
                                    
                            $resturl 'https://www.googleapis.com/calendar/v3/calendars/'$calendar_id '/events?maxResults='.$this->max_results.'&singleEvents=true&orderBy=startTime&timeMin='.urlencode(date('c'));
                                    
                            $content = @file_get_contents($resturlfalse$context);
                                    
                            $this->debug($content);

                                    if (
                            $content !== false)
                                    {
                                        
                            $result json_decode($content,true);

                                        
                            $i 1;

                                        foreach (
                            $result["items"] as $entry)
                                        {
                                            
                            $startstamp = (string)($entry["start"]["dateTime"]);
                                            
                            $endstamp = (string)($entry["end"]["dateTime"]);
                                            if (
                            $startstamp == '')
                                                
                            $startstamp = (string)($entry["start"]["date"]);
                                            if (
                            $endstamp == '')
                                                
                            $endstamp = (string)($entry["end"]["date"]);
                                            
                            $startstamp strtotime($startstamp) + date("Z"$startstamp);
                                            
                            $endstamp strtotime($endstamp) + date("Z"$endstamp);

                                            
                            $color '';
                                            if (((string)(
                            $entry["colorId"]))!='')
                                                
                            $color=$colors[(string)($entry["colorId"])]["background"];

                                            
                            $this->data[] = array('pos' => $i++,
                                                
                            'start' => date('y-m-d'$startstamp).' '.gmdate('H:i:s'$startstamp),
                                                
                            'end' => date('y-m-d'$endstamp).' '.gmdate('H:i:s'$endstamp),
                                                
                            'title' => (string)($entry["summary"]),
                                                
                            'content' => (string)($entry["description"]),
                                                
                            'where' => (string)($entry["location"]),
                                                
                            'color' => $color,
                                                
                            'link' => (string)($entry["htmlLink"])
                                            );
                                        }

                                    }
                                    else
                                        
                            $this->error('Calendar: Google''Calendar read request failed!');
                                }
                            }


                            // -----------------------------------------------------------------------------
                            // call the service
                            // ----------------------------------------------------------------------------

                            $service = new calendar_google(array_merge($_GET$_POST));
                            echo 
                            $service->json();

                            ?>

                            Kommentar


                              #74
                              Hallo,

                              hat denn einer auch das Selbe Problem wie ich, das Termin immer mit einer Stunde Zeitversatz dargestellt werden?

                              Wo könnte ich schauen, das es wieder stimmt.

                              Mit der Alten PHP hatte ich das Problem nicht. nun hab ich das wegen der ganztägigen termin mal aktualisiert und schwubb werden die Termin mit Versatz dargestellt.

                              Danke und schöne Grüße

                              Kommentar


                                #75
                                hab ich oben schon geschrieben, das ich das auch hab.. hab auch schon einiges probiert... leider ohne
                                Erfolg..

                                Gruß Martin
                                Die Selbsthilfegruppe "UTF-8-Probleme" trifft sich diesmal abweichend im groüen Saal.

                                Kommentar

                                Lädt...
                                X