2012-08-08 2 views
5

서비스 계정에서 Google 캘린더에 새 일정을 만들고 싶습니다. 올바르게 액세스하고 모든 캘린더를 목록에 인쇄 할 수 있습니다. 하지만 새 이벤트를 만들려는 경우 403 금지되어 있습니다.Google 서비스 계정에서 Google 캘린더 일정 수정 : 403

내 코드 :

require_once 'src/Google_Client.php'; 
require_once 'src/contrib/Google_CalendarService.php'; 

session_start(); 

const CLIENT_ID = 'XXXXXXXXXX.apps.googleusercontent.com'; 
const SERVICE_ACCOUNT_NAME = '[email protected]'; 

const KEY_FILE = 'google_src/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-privatekey.p12'; 

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

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

$key = file_get_contents(KEY_FILE); 
$client->setClientId(CLIENT_ID); 
$client->setAssertionCredentials(new Google_AssertionCredentials(
    SERVICE_ACCOUNT_NAME, 
    'https://www.google.com/calendar/feeds/MY_CALENDAR_ID/private/full/', 
    $key) 
); 

$client->setClientId(CLIENT_ID); 
$cal = new Google_CalendarService($client); 
$event = new Google_Event(); 
$event->setSummary('Bon dia pel matí!'); 
$event->setLocation('Somewhere'); 
$start = new Google_EventDateTime(); 
$start->setDateTime('2012-08-06T10:00:00.000-07:00'); 
$event->setStart($start); 
$end = new Google_EventDateTime(); 
$end->setDateTime('2012-09-06T10:25:00.000-07:00'); 
$event->setEnd($end); 

$createdEvent = $cal->events->insert(CALENDAR_NAME, $event); 

그리고 서버 응답 :

(403) Forbidden 

어떤 아이디어? 어쩌면 다른 범위, 또는 편집 이벤트 허용 (구성 할 수있는 위치를 알고 약속 했음)

물론 내 일정은 공개 일정입니다.

어떤 도움을 환영합니다 :)

고마워요!

+0

이 이유가 금지 된 것은? – Peon

+0

어쩌면,하지만 이벤트를 편집 할 수있는 곳이 있는지 모르겠습니다. 캘린더 구성시 아무 것도 보이지 않고 캘린더 API를 활성화합니다. 나는 캘린더와 이벤트를 나열하는 데 문제가 없습니다. 편집 및 작성 만하십시오. 하지만 실제로이 옵션을 검색하는 데 많은 시간을 할애하며이 작업을 수행 할 수 없습니다. S 감사합니다. – eMarine

답변

12

나는 그것을 풀었고 문제는 코드가 아니었다. 잘 동작한다.

문제는 캘린더 공유입니다. 내가 모르는 뭔가.

서비스 계정에서 캘린더 일정을 편집 할 수있게하려면 Google Api Console에서 수행하는 모든 단계를 수행하지 않아도 캘린더 구성 (캘린더 구성 ->이 캘린더 공유하기)에서 이메일에 대한 권한을 부여해야합니다 Google Api Console (이메일 주소)에 지정된 계정

비즈니스 계정 인 경우 문제가 될 수 있으며 계정 관리자에게 문의해야합니다.

여기에 표시된 코드는 올바르게 작동하므로 누군가에게 도움이되기를 바랍니다. 단지 475 버전의 Google Api 클라이언트를 사용해야한다는 것을 기억하십시오.

당신은이 링크에서 찾을 수 있습니다 : http://google-api-php-client.googlecode.com/svn/trunk/src/

어쩌면
+0

이것은 나를 위해 일했습니다. 방금 내 계정 관리자가 캘린더를 내 서비스 계정의 이메일 주소와 공유하도록했습니다. 감사! –

+0

고마워요, 고마워요, 고마워요! 이것은 내가 찾고 있었던 것이다! –

+0

몇 시간 동안 솔루션을 찾고있었습니다! 대답 해줘서 고마워요. – stil

관련 문제