2012-08-08 137 views
5

我想從服務帳戶在Google日曆中創建新活動。 我可以正確訪問並打印列出我所有的日曆。 但是當我想創建一個新事件時,響應是403 Forbidden。從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 2012-08-08 11:04:06

+0

也許,但我不知道是否有某個地方我可以編輯活動。在日曆配置中,我沒有看到任何內容,並且我激活了日曆API。我沒有問題列出caendars和事件。只能編輯和創建。但是,真的,我花了很多時間來搜索這個選項,並且沒有什麼可以做的:S 謝謝 – eMarine 2012-08-08 11:06:23

回答

12

我解決了它,問題不是代碼,它工作正常。

問題是共享我的日曆。我不知道的東西。

要允許從服務帳戶編輯您的日曆活動,您無法在Google Api控制檯中執行所有步驟,您必須將日曆配置(日曆配置 - >共享此日曆)的權限授予電子郵件帳戶指定到Google Api控制檯(電子郵件地址)。

這可能是一個問題,如果它是一個商業帳戶,那麼你將不得不聯繫帳戶管理員。

此處顯示的代碼工作正常,所以我希望它可以幫助別人,只記得您必須使用475版本的Google Api Client。

您可以在此鏈接: http://google-api-php-client.googlecode.com/svn/trunk/src/

+0

這對我有用。我剛剛讓我們的帳戶管理員與我的服務帳戶的電子郵件地址共享日曆。謝謝! – 2012-11-05 19:35:14

+0

謝謝,謝謝,謝謝!這就是我一直在尋找的! – 2012-12-22 18:58:51

+0

我正在尋找解決方案几個小時!謝謝你的回答。 – stil 2013-04-07 21:37:44