내 인트라넷에 내 사용자의 캘린더에 이벤트를 추가해야하는 PHP 응용 프로그램이 있습니다. 서비스 계정이있는 사용자 달력에 액세스하십시오.
나는 다음과 같은 지시 https://developers.google.com/+/domains/authentication/delegationI 설치 구글-API-PHP 클라이언트를 다음과 내 시작점으로 예제 서비스 accounts.php을 사용했다.
$client_id = 'rrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrrr.apps.googleusercontent.com';
$service_account_name = '[email protected]';
$key_file_location = 'file.p12';
$client = new Google_Client();
$client->setApplicationName("egw - intranet");
$service = new Google_Service_Calendar($client);
//authenticate
if (isset($_SESSION['service_token'])) {
$client->setAccessToken($_SESSION['service_token']);
}
$key = file_get_contents($key_file_location);
$cred = new Google_Auth_AssertionCredentials(
$service_account_name,
array('https://www.googleapis.com/auth/calendar'),
$key
);
$client->setAssertionCredentials($cred);
if ($client->getAuth()->isAccessTokenExpired()) {
$client->getAuth()->refreshTokenWithAssertion($cred);
}
$_SESSION['service_token'] = $client->getAccessToken();
$event = new Google_Service_Calendar_Event();
$event->setSummary('API V3 TEST');
$event->setLocation('rrrrrrrrrrrrrrrrrrrrrrrrr');
$start = new Google_Service_Calendar_EventDateTime();
$start->setDateTime('2014-11-03T10:00:00.000-07:00');
$event->setStart($start);
$end = new Google_Service_Calendar_EventDateTime();
$end->setDateTime('2014-11-04T10:25:00.000-07:00');
$event->setEnd($end);
$attendee1 = new Google_Service_Calendar_EventAttendee();
$attendee1->setEmail('[email protected]');
$attendees = array($attendee1);
$event->attendees = $attendees;
$createdEvent = $service->events- >insert('[email protected]', $event);
echo $createdEvent->getId();
수신 오류 404 개를 찾을 수 없습니다. 서비스 계정으로 테스트를 위해 사용하는 캘린더를 수동으로 공유하는 경우 작동합니다. 그러나 내 프로그램의 모든 사용자의 모든 캘린더를 수동으로 공유하지 않고도 작업하고 싶습니다. 누군가 내가 놓친 걸 말해 줄 수 있니? 당신은 특별히 구글 프로젝트와 공유되지 않은 캘린더에 이벤트를 추가 할 수 없습니다
관리 콘솔에서 범위를 올바르게 설정 했습니까? 여기에 https://www.googleapis.com/auth/calendar – luc
이 있어야합니다. 예, https://www.googleapis.com/auth/calendar를 범위로 사용하고 있습니다. – Carl