2013-12-02 2 views
1

Возможно ли получить доступ к сервису календаря Google при использовании метода account-account? Google говорит косвенно, это невозможно, потому что служба календаря не входит в список поддерживаемых сервисов в документации метода service-account, но я лично думаю, что это возможно. Но как?Создание событий календаря Google с учетной записью php и службы - проверка подлинности проблемы

Я пишу приложение календаря в php, и там я хочу создавать события календаря в свой Google-календарь без действия пользователя (например, логин).

я узнал, что первое приложение должно аутентифицировать себя на сервер Google, используя сервис-счет-метод с помощью ключа-файла .p12

Я использую следующий код для проверки подлинности: (скачано FOM здесь: http://code.google.com/p/google-api-php-client/source/browse/trunk/examples/prediction/serviceAccount.php)

session_start(); 
require_once 'google-api/src/Google_Client.php'; 
require_once 'google-api/src/contrib/Google_CalendarService.php'; 
require_once 'google-api/src/contrib/Google_PredictionService.php'; 


$client = new Google_Client(); 
$client->setApplicationName(GOOGLE_APPLICATION_NAME); 
$client->setClientId(GOOGLE_CLIENT_ID); 

$keyfile = file_get_contents(GOOGLE_KEY_FILE); 

$client->setAssertionCredentials(new Google_AssertionCredentials(
    GOOGLE_SERVICE_ACCOUNT_NAME, 
    array('https://www.googleapis.com/auth/prediction'), 
    $keyfile) 
); 

Но этот логин, похоже, не работает. Как узнать, был ли сервер в данный момент зарегистрирован?

Я хочу продолжать с этим:

$cal = new Google_CalendarService($client); 
if (isset($_SESSION['token'])) { 
    $client->setAccessToken($_SESSION['token']); 
} 
if ($client->getAccessToken()) { 
    $calList = $cal->calendarList->listCalendarList(); // <- this is line 55 
    print "<h1>Calendar List</h1><pre>" . print_r($calList, true) . "</pre>"; 

    $_SESSION['token'] = $client->getAccessToken(); 
} else { 
    $authUrl = $client->createAuthUrl(); 
    print "<a class='login' href='$authUrl'>Connect Me!</a>"; 
} 

Но в строке 55 приходит сообщение об ошибке:

Fatal error: Uncaught exception 'Google_ServiceException' with message 'Error calling GET https://www.googleapis.com/calendar/v3/users/me/calendarList : (403) Insufficient Permission' in /usr/www/users/leuchtk/html/google-api/src/io/Google_REST.php:66

Stack trace: #0 /usr/www/users/leuchtk/html/google-api/src/io/Google_REST.php(36): Google_REST::decodeHttpResponse(Object(Google_HttpRequest)) #1 /usr/www/users/leuchtk/html/google-api/src/service/Google_ServiceResource.php(186): Google_REST::execute(Object(Google_HttpRequest)) #2 /usr/www/users/leuchtk/html/google-api/src/contrib/Google_CalendarService.php(205): Google_ServiceResource->__call('list', Array) #3 /usr/www/users/leuchtk/html/i_termine_admin.php(55): Google_CalendarListServiceResource->listCalendarList() #4 /usr/www/users/leuchtk/html/termine_admin.php(113): include('/usr/www/users/...') #5 {main} thrown in /usr/www/users/leuchtk/html/google-api/src/io/Google_REST.php on line 66

Так выглядит, приложение не вошли в систему Я полностью. потерянный в этом коде на данный момент. Спасибо за какой-то мало света, что не хватает там ...

Marco

ответ

0

Вы можете обратиться к этому вопросу. Ваш вопрос может быть просто добавить

array('https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/calendar.readonly'),

в том, где вы называете

$client->setAssertionCredentials(); 

Google PHP Client API: Insufficient Permission

Надеется, что это помогает

Смежные вопросы