ugrás a tartalomhoz

Google Calendar API

Meredith · 2013. Már. 10. (V), 14.43
Üdv!

Google Calandarhoz szeretnék írni egy kis programot, azonban már az authentikácíónál csúnyán elhasal valami.

Első körben ezt a mintát szerettem volna beüzemelni:
http://code.google.com/p/google-api-php-client/source/browse/trunk/examples/calendar/simple.php

A kulcsokat létrehoztam, a kódot velük kitöltöttem.

Amikor rámegyek a Connect Me-ra, be is jön a Google oldala, miszerint az appom engedélyt kér a kalendárium kezeléséhez.
Majd ha rányomom a Hozzáférés megadására, vissza is irányít az oldalamra, ami már a következő hivaüzivel fogad:

Fatal error: Uncaught exception 'Google_IOException' with message 'HTTP Error: (0) error setting certificate verify locations: CAfile: /usr/local/share/certs/ca-root-nss.crt CApath: none ' in /docroot/gcalendar/src/io/Google_CurlIO.php:128
Stack trace:
#0 /docroot/gcalendar/src/auth/Google_OAuth2.php(101): Google_CurlIO>makeRequest(Object(Google_HttpRequest))
#1 /docroot/gcalendar/src/Google_Client.php(131): Google_OAuth2->authenticate(Array, '4/DRyWwzWkMPPa0...')
#2 /docroot/gcalendar/index.php(28): Google_Client>authenticate('4/DRyWwzWkMPPa0...')
#3 {main} thrown in /docroot/gcalendar/src/io/Google_CurlIO.php on line 128


Ez valami server beállítási gond lehet, hogy nem találja a ca-root-nss.cr -t?
Esetleg ezt be lehet szerezni valahonnan és manuálisan megadni?
Vagy valami más módszer, amivel ez megkerülhető?

Minden tippet szívesen várok! :)
 
1

Ez valami server beállítási

Poetro · 2013. Már. 10. (V), 22.14
Ez valami server beállítási gond lehet, hogy nem találja a ca-root-nss.cr -t?

Igen.
2

Majdnem jó!

Meredith · 2013. Már. 11. (H), 01.57
Pff, Integritynél volt, mit várunk tőle...
Másik serveren működött!

Azóta tovább akartam fejleszteni, hogy ne kelljen mindig hozzáférést kérni, ha szeretnék lekérdezést futtatni.
Ezért létrehoztam hozzá egy service accountot, a sima web app helyet.

A kicsit eltérő kódot át is alakítottam az új adatoknak megfelelően, viszont egyszerűen nem akar működni!
A hibaüzenet:
Fatal error: Uncaught exception 'Google_AuthException' with message 'Error refreshing the OAuth2 token, message: '{
  "error" : "invalid_scope"
}'' in /var/www/devel/gc/src/auth/Google_OAuth2.php:279
Stack trace:
#0 /var/www/devel/gc/src/auth/Google_OAuth2.php(256): Google_OAuth2->refreshTokenRequest(Array)
#1 /var/www/devel/gc/src/auth/Google_OAuth2.php(209): Google_OAuth2->refreshTokenWithAssertion()
#2 /var/www/devel/gc/src/service/Google_ServiceResource.php(167): Google_OAuth2->sign(Object(Google_HttpRequest))
#3 /var/www/devel/gc/src/contrib/Google_CalendarService.php(154): Google_ServiceResource->__call('list', Array)
#4 /var/www/devel/gc/index.php(23): Google_CalendarListServiceResource->listCalendarList()
#5 {main}
  thrown in /var/www/devel/gc/src/auth/Google_OAuth2.php on line 279


És a kis PHP kódom:

require_once 'src/Google_Client.php'; 
require_once 'src/contrib/Google_CalendarService.php';
 
const CLIENT_ID = 'xxxxxxxx-xxxxxxxxxxx.apps.googleusercontent.com'; 
const SERVICE_ACCOUNT_NAME = 'xxxxxxxx-xxxxxxxxxxxx##kukac##developer.gserviceaccount.com'; 
const KEY_FILE = 'xxxxxxxxx.p12';
 
$client = new Google_Client(); 
$client->setApplicationName('Calendar proba'); 

$key = file_get_contents(KEY_FILE); 
$prn = 'xxxxxxx##kukac##gmail.com'; 
$scopes = array('https://wwww.googleapis.com/auth/calendar'); 

$client->setAssertionCredentials(
  new Google_AssertionCredentials(
    SERVICE_ACCOUNT_NAME, $scopes, $key, 
    'notasecret', 'http://oauth.net/grant_type/jwt/1.0/bearer', $prn
  )
); 

$client->setClientId(CLIENT_ID);
$service = new Google_CalendarService($client); 
$list = $service->calendarList->listCalendarList(); 
A kóddal látszólag minden rendben. Meg annyiszor ellenőriztem a constansoknak megadott értéket, és persze széttúrtam a google-t is, de semmi nem vezetett megoldásra.


Erre valami tippetek? :)