2

初心者の質問です。まだ Google API に慣れていません。


やあ、

いくつかの例が付属している Google ( https://developers.google.com/google-apps/calendar/downloads ) が提供するコードを使用しています (元々は最新のように見えたため)。

「calendar/simple.php」の例が示すように、カレンダーを正常に取得しています(OAuth2セットアップは正しいです)。

その後、私はこれを行っており、動作します(エラーなしでイベントを適切に取得できるかどうかを確認するためだけに必要なコードではありません):

$test = $cal->events->get("calendar@gmail.com","longeventcodegivenbygoogle");

今、特定のイベントのいくつかの値を設定できるようにしたいと考えています。

$event = new Event();
$event->setLocation('Somewhere');
$test = $cal->events->update("calendar@gmail.com","longeventcodegivenbygoogle",$event);

しかし、それは私に与えています:

( ! ) Fatal error: Uncaught exception 'apiServiceException' with message 'Error calling PUT https://www.googleapis.com/calendar/v3/calendars/calendar@gmail.com/events/longeventcodegivenbygoogle?key=myapikey: (400) Required' in C:\wamp\www\test\Gapi3\src\io\apiREST.php on line 86
( ! ) apiServiceException: Error calling PUT https://www.googleapis.com/calendar/v3/calendars/calendar@gmail.com/events/longeventcodegivenbygoogle?key=myapikey: (400) Required in C:\wamp\www\test\Gapi3\src\io\apiREST.php on line 86

私は何を間違っていますか?

ご協力いただきありがとうございます。

4

2 に答える 2

4

本当の解決策は、Claudio Cherubino によって、イベント クラスを呼び出してイベント オブジェクトを作成することで提供されます。

デフォルトでは、get() はイベント オブジェクトではなく配列を返すようです。

$event = new Event($cal->events->get("calendar@gmail.com","longeventcodegivenbygoogle"));
$event->setLocation('Somewhere');
$updated = new Event($cal->events->update("calendar@gmail.com", $event->getId(), $event));

update() または get() によって提供される配列を使用してイベントを作成しない場合、これらの呼び出しによって返されるのは単純な配列であるため、機能しません。

于 2012-06-07T12:40:21.810 に答える
4

イベントを更新するには、新しいイベントをインスタンス化するのではなく、最初にイベントを取得してから、そのプロパティの値を変更します。

次のコードを試してください。

$event = $cal->events->get("calendar@gmail.com","longeventcodegivenbygoogle");
$event->setLocation('Somewhere');
$updated = $cal->events->update("calendar@gmail.com", $event->getId(), $event);
于 2012-06-06T22:25:27.747 に答える