2012-03-27 17 views
2

Ich habe viele Beiträge zu diesem Thema gesehen, aber keine wurden beantwortet, und die meisten sind wegen ihrer vagen Natur geschlossen. Hoffentlich kann ich etwas etwas erklärender schreiben.Google Kalender Buchungssystem

Ich habe ein Programm geschrieben, das Daten von meinem Kunden Google Kalender lädt. Der OAuth2 'access_token' für diesen Kalender wird in der Datenbank gespeichert und jedes Mal weitergegeben, wenn ich darauf zugreifen muss. Als solches greift es immer auf den gleichen Kalender zu, den mein Client besitzt.

Mein Kunde aktualisiert dann diesen Google Kalender, und über die Google Kalender API und ein bisschen AJAX zeichne ich seine Frei/Gebucht-Daten ein und aktualisiere eine flache HTML-Seite für den Benutzer.

So verhält es sich wie ein Buchungssystem. Der Benutzer kann die HTML-Seite manipulieren, und die ausgewählten Tage werden dann über die Google Kalender-API im Google Kalender meiner Kunden aktualisiert.

Hier ist das Problem. Ich habe keine ‚refresh_token‘ und als solche

Aus irgendeinem Grunde erhalten, nachdem eine Stunde, meine ‚access_token‘ ist veraltet und ich kann die Kalenderdaten nicht zugreifen.

Dies sind die Werte, die ich für meine ‚Code‘ sende (nicht über die Formatierung Sorge, das nur Sie zeigen):

'redirect_uri' : 'http://local.test.com', 
    'client_id' : 'blahblah.apps.googleusercontent.com', 
    'scope' : 'https://www.googleapis.com/auth/calendar', 
    'access_type' : 'offline', 
    'response_type' : 'code' 

Sobald ich meine ‚Code‘ abgerufen haben mache ich die zweite Anfrage für meine dann 'access_token':

  'code': $code, 
      'grant_type': 'authorization_code' , 
      'redirect_uri' : 'http://local.test.com', 
      'client_id' : 'blahblah.apps.googleusercontent.com', 
      'client_secret' : 'secret_code' 

So bekomme ich alles zurück, was ich brauche, nur keine 'refresh_token'.

Kann jemand darauf hinweisen, wo ich hier falsch liege? Kann jemand vielleicht eine bessere Lösung vorschlagen, die auf meinem Fall basiert, oder selbst wenn ich das Unmögliche versuche?

Jede Hilfe wäre sehr dankbar

Ich verwende Google Calendar API v3

Antwort

2

Für alle, die über diesen Beitrag stolpert.

Die oben genannten Schritte Ihr 'access_token' und 'refresh_token' zu bekommen korrekt sind. Google hat jedoch die Art und Weise geändert, in der OAuth2-Token ausgegeben werden.

Ihre erste Anfrage wird Ihnen eine 'Refresh_Token' gewähren, danach erhalten Sie keine weitere. Wenn Sie es verlieren, müssen Sie in der Google API-Konsole völlig neue Kundengeheimnisse einrichten.