2012-01-24 6 views
25

Badam interfejs API Kalendarza Google i dokumenty dotyczące uwierzytelniania (http://code.google.com/apis/calendar/v3/using.html#auth). Wydaje się, że wspomniany tu przypadek użycia to pisanie aplikacji, która uzyskuje dostęp do kalendarza użytkownika. Jednak piszę stronę internetową, która będzie miała dostęp do kalendarza właściciela strony internetowej i wyświetla tylko te informacje z jednego kalendarza. Nie chcę, aby użytkownik wprowadzał informacje o swoim koncie Google, co właśnie chce zrobić OAuth.Jak połączyć się z interfejsem API Kalendarza Google bez uwierzytelnienia oAuth?

Zasadniczo szukam sposobu na uzyskanie dostępu do pojedynczego prywatnego kalendarza Google i uwierzytelnienie go poprzez przekazanie poświadczeń bezpośrednio do usługi.

Istnieją podobne pytania: How to use OAuth with Google Calendar to access only ONE calendar? , które zdają się wskazywać, że plakat pierwotnie przekazywał dane uwierzytelniające bezpośrednio. Czy ta funkcja jest nadal dostępna? Jak radzisz sobie z opisanym przypadkiem użycia?

Odpowiedz

9

Mam ten sam problem. Znalazłem ten 3-częściowy samouczek, który tworzy dokładnie to, co chcesz. Web page for bookings
Tworzysz stronę internetową, która zapisuje się bezpośrednio do twojego kalendarza (nie do użytkowników), i dlatego użytkownicy nie muszą dawać ci pozwolenia na dostęp do ich kalendarza.
To rozwiązanie działa dla mnie, ale musisz zarządzać nim bezpośrednio przy pomocy usługi REST.
Szukam sposobu, aby użyć klienta Google api php, ponieważ wydaje się nieco prostsze. Ale jeszcze nie znalazłem sposobu, aby poprawnie edytować plik google-api-php-client/src/config.php, aby działał w taki sposób, aby uwierzytelnić siebie nie faktycznego użytkownika, ponieważ potrzebujesz dostępu do kalendarza. Jeśli ktoś ma pomysł lub skrypt, który by to zrobił, byłbym bardzo wdzięczny.

+0

część 3 artykuł, o którym mówisz, wydaje się być odpowiedzią. Wypróbuję to tak szybko, jak tylko będę miał szansę, i zaznaczę to jako odpowiedź, jeśli zadziała. Planowałem używać interfejsu REST API i tak czy inaczej zajmowałem się danymi JSON, więc to powinno mnie skłonić. Dzięki! –

+0

To zadziałało! Kluczem jest przeglądanie aplikacji jako "zainstalowanej aplikacji". Po uzbrojeniu czegoś tymczasowo w celu uzyskania tokena odświeżania można następnie użyć tokena odświeżania, aby uzyskać nowy token dostępu bez pytania użytkownika. –

14

Jeśli się nie mylę, to już uruchomiła usługi odpowiadają za to teraz: https://developers.google.com/accounts/docs/OAuth2ServiceAccount

Edit:

Oto modyfikacja z ich 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

Niestety, nie dodali jeszcze wsparcia dla google. – thelastshadow

+1

Tak. Zmodyfikowałem kod serwisowy z ich interfejsu API przewidywania i tak naprawdę działał w przypadku Kalendarza –

+0

? Warto to wiedzieć. dzięki. – thelastshadow

Powiązane problemy