2016-07-20 8 views
0

Ich integriere Google Kalender mit meiner Anwendung erfolgreich. Zum ersten Mal authentifiziere ich erfolgreich und alle Ereignisse werden auf Google Kalender ordnungsgemäß erstellt.Einloggen in Google Kalender mit nur Token

Jetzt, zum zweiten Mal, ich möchte nicht authentifizieren, ich möchte nur auf eine Schaltfläche klicken, dann die alle neuen Ereignisse aus meiner Anwendung sollte auf Google Kalender erstellt werden.

Ich denke, dass es durch das Aktualisierungstoken getan wird. Ich habe Token erhalten. Siehe meinen untenstehenden Code.

Ich habe Token hier, aber jetzt möchte ich mich in meinem Google Kalender anmelden, ohne die Authentifizierung immer wieder zu verwenden. Weil ich es das erste Mal gemacht habe.

Kann ich mich jetzt mit Token in meinem Google-Konto anmelden? wenn ja, wie kann ich das machen?

Das erste Mal authentifiziere ich den Benutzer, dafür ist hier mein Code.

<?php 
session_start(); 
$client = new Google_Client(); 
$client->setApplicationName("ABC-APP"); 
$client->setClientId(""); 
$client->setClientSecret(''); 
$client->setRedirectUri(''); 
$client->setScopes(array(
'https://www.googleapis.com/auth/calendar', 
'https://www.googleapis.com/auth/calendar.readonly', 
)); 
if (isset($_GET['code'])) { 
$client->authenticate($_GET['code']); 
$_SESSION['token'] = $client->getAccessToken(); 
if (isset($_SESSION['token'])) { 
$client->setAccessToken($_SESSION['token']); 
} 
} 

if ($client->getAccessToken()) { 
    $service = new Google_Service_Calendar($client); 
    $event = new Google_Service_Calendar_Event(array(
     'summary' => "Myevent", 
     'location' => "31 Shuijd", 
     'description' => "Test Descriptionj", 
     'start' => array(
      'dateTime' => "12/1/2016", 
      'timeZone' => "Asia/Kolkata", 
     ), 
     'end' => array(
      'dateTime' => "12/2/2016", 
      'timeZone' => "Asia/Kolkata", 
     ), 
     'recurrence' => array(
      'RRULE:FREQ=DAILY;COUNT=2' 
     ), 
     'attendees' => array(
      array('email' => $row['contact_email']), 
     ), 
     'reminders' => array(
      'useDefault' => FALSE, 
      'overrides' => array(
      array('method' => 'email', 'minutes' => 24 * 60), 
      array('method' => 'popup', 'minutes' => 10), 
     ), 
     ), 
    )); 
    $event = $service->events->insert("primary", $event); 


} 
?> 

Antwort

-1

Ich integriere Google Kalender erfolgreich mit meiner Anwendung. Beim ersten Mal authentifiziere ich erfolgreich und alle Ereignisse werden im Google Kalender ordnungsgemäß erstellt. ->Bitte fügen Sie den Code an, wenn Sie zum ersten Mal Ereignisse erstellt haben

+0

Sie haben zum ersten Mal Token bekam. Gleiches Vorgehen, das Sie zum zweiten Mal befolgt haben. Versuchen Sie also einfach dieses Token und fügen Sie das Ereignis hinzu. nicht getestet, aber es sollte funktionieren. –

0

Sie befinden sich in einer guten Richtung. Sie müssen Ihr Zugriffstoken nur aktualisieren, wenn es abgelaufen ist. Verwenden Sie dazu das von Google erhaltene Aktualisierungstoken, nachdem Sie den Zugriffstyp offline festgelegt haben. Sie sollten dieses Aktualisierungstoken in der Datenbank für jeden Benutzer speichern, der Ihnen Offlinezugriff gewährt, damit Sie das Zugriffstoken aktualisieren können, ohne erneut nach einer Berechtigung zu fragen.

Der Code würde wie folgt aussehen:

$client->refreshToken($refreshToken); 
$tokens = $client->getAccessToken(); 
$tokens->refresh_token = $refreshToken; // the refresh token is not returned, so if you're updating the session or database, you should set it manually so you don't lose it 
+0

Haben Sie einen Beispielcode? Ich habe keine Ahnung davon. –

+0

Ich habe es für Google Mail in diesem Wrapper https://packagist.org/packages/adevait/gmail-wrapper implementiert, der Prozess ist der gleiche. Überprüfen Sie die Datei includes/auth.php. Das ist im Grunde genommen - wenn Ihr Zugriffstoken abgelaufen ist, rufen Sie die 'refreshToken'-Funktion auf und holen das Zugriffstoken erneut. – trajchevska

0

Sie müssen nur Zugriffstoken in die Sitzung speichern, wenn Sie zum ersten Mal anmelden und diese passieren, wenn Sie Ereignis erstellen möchten, wenn

$session_token = <access token store in session > 
if (!$client->getAccessToken()) { 
    $client->setAccessToken($session_token); 
} 
erfordern

bearbeiten :: ändert

if (isset($_GET['code'])) { 
    $client->authenticate($_GET['code']); 
    $_SESSION['token'] = $client->getAccessToken(); 
} 

if (isset($_SESSION['token'])) { 
    $client->setAccessToken($_SESSION['token']); 
} 
+0

Ich habe das schon gemacht. Jetzt möchte ich alle neuen Ereignisse erstellen, ohne die Authentifizierung zu verwenden. Weil ich mich zum ersten Mal authentifiziere. Zum zweiten Mal muss ich den Benutzer nicht authentifizieren. Ich möchte nur Refresh-Token verwenden. –

+0

@harishmahajan, ich aktualisierte Code –

+0

Token ist nur für eine Stunde erlaubt. Dann läuft es ab. Dann müssen wir das Token aktualisieren, aber ich habe keine Ahnung, wie man es benutzt. –