2012-01-24 13 views
25

Ho studiato l'API di Google Calendar e i documenti sull'autenticazione (http://code.google.com/apis/calendar/v3/using.html#auth). Sembra che il caso d'uso menzionato qui stia scrivendo un'applicazione che accede al calendario dell'utente. Tuttavia, sto scrivendo una pagina web che accederà al calendario del proprietario del sito web e mostrerà solo le informazioni di quel calendario. Quindi, non voglio che l'utente inserisca nei propri dati dell'account Google quale è ciò che oAuth vuole fare.Come faccio a connettermi all'API di Google Calendar senza l'autenticazione oAuth?

Fondamentalmente, sto cercando un modo per accedere a un singolo calendario Google privato e autenticarlo passando le credenziali direttamente al servizio.

C'è una domanda simile qui: How to use OAuth with Google Calendar to access only ONE calendar? che sembra indicare che il poster in origine stava passando le credenziali direttamente. Questa funzione è ancora disponibile? Come gestisci il caso d'uso che ho descritto?

risposta

9

Ho lo stesso problema. Ho trovato questo tutorial in 3 parti che rende esattamente quello che vuoi. Web page for bookings
Si crea una pagina Web che scrive direttamente nel proprio calendario (non gli utenti) ed è per questo che gli utenti non devono concedere l'autorizzazione per accedere al proprio calendario.
Questa soluzione funziona per me, ma è necessario gestirla direttamente con REST.

Sto cercando un modo per utilizzare il client PHP API php perché sembra un po 'più semplice. Ma non ho ancora trovato il modo di modificare correttamente il file google-api-php-client/src/config.php per funzionare in un modo in cui non si autentica te stesso, perché è necessario accedere al tuo calendario. Se qualcuno ha un'idea o una sceneggiatura che lo farei, sarei molto grato.

+0

Il 3 parte l'articolo a cui fai riferimento sembra essere la risposta. Lo proverò non appena ne avrò la possibilità e segnerò questa come risposta se funziona. Avevo programmato di utilizzare l'API REST e di occuparmi comunque dei dati JSON, quindi questo dovrebbe portarmi avanti. Grazie! –

+0

Questo ha funzionato! La chiave sta visualizzando l'applicazione come "applicazione installata". Dopo aver caricato temporaneamente qualcosa per ottenere un token di aggiornamento, è possibile utilizzare successivamente il token di aggiornamento per ottenere un nuovo token di accesso senza richiedere all'utente. –

14

Se non sbaglio, hanno lanciato l'account di servizio per questo ora: https://developers.google.com/accounts/docs/OAuth2ServiceAccount

Edit:

Ecco la modifica dal loro Prediction API

session_start(); 
require_once "google-api-php-client/src/Google_Client.php"; 
require_once "google-api-php-client/src/contrib/Google_CalendarService.php"; 

const CLIENT_ID = '...'; 
const SERVICE_ACCOUNT_NAME = '...'; 

// Make sure you keep your key.p12 file in a secure location, and isn't 
// readable by others. 
const KEY_FILE = '...'; 

$client = new Google_Client(); 
$client->setApplicationName("..."); 


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

// Load the key in PKCS 12 format (you need to download this from the 
// Google API Console when the service account was created. 
$key = file_get_contents(KEY_FILE); 
$client->setAssertionCredentials(new Google_AssertionCredentials(
    SERVICE_ACCOUNT_NAME, 
    array('https://www.googleapis.com/auth/calendar', "https://www.googleapis.com/auth/calendar.readonly"), 
    $key) 
); 

$client->setClientId(CLIENT_ID); 
$service = new Google_CalendarService($client); 

//Save token in session 
if ($client->getAccessToken()) { 
    $_SESSION['token'] = $client->getAccessToken(); 
} 

//And now you can use the code in their PHP examples, like: $service->events->listEvents(...) 
+0

Purtroppo non hanno ancora aggiunto il supporto per il calendario di Google. – thelastshadow

+1

Sì. Ho modificato il codice del servizio dalla loro API di previsione e ha funzionato per Calendar –

+0

davvero? È utile saperlo. Grazie. – thelastshadow

Problemi correlati