致命错误:在非对象上调用成员函数insert()

时间:2014-03-14 19:24:44

标签: php google-api-php-client

我试图直接从php脚本向Google日历添加活动,但收到此错误:

  

致命错误:在非对象上调用成员函数insert()...

<?php

set_include_path("scripts/google-api-php-client/src/" . PATH_SEPARATOR . get_include_path());

$path = $_SERVER['DOCUMENT_ROOT'];
$google_client = $path . '/xxxx/scripts/google-api-php-client/src/Google_Client.php';
include ($google_client);

require_once $path . '/xxxx/scripts/google-api-php-client/src/contrib/Google_CalendarService.php';

$event = new Google_Event();
$event->setSummary('Pi Day');
$event->setLocation('Math Classroom');
$start = new Google_EventDateTime();
$start->setDateTime('2013-03-14T10:00:00.000-05:00');
$event->setStart($start);
$end = new Google_EventDateTime();
$end->setDateTime('2013-03-14T10:25:00.000-05:00');
$event->setEnd($end);

// error is on this next line
$createdEvent = $cal->events->insert('some_calendar@gmail.com', $event);

echo $createdEvent->id;

?>

我在许多示例中看​​到过,有些人使用类似的代码:

$client = new Google_Client();
$client->setApplicationName("Google Calendar PHP Event Creator");
$client->setClientId('MY CLIENT ID ADDRESS IS HERE');
$client->setClientSecret('MY CLIENT SECRET KEY IS HERE');
$client->setRedirectUri('http://localhost/phpt/caladd.php');
$client->setDeveloperKey('MY API KEY IS HERE');
$cal = new Google_CalendarService($client);

但是在我看来,有些应用程序正在被引用,并且正在生成日历事件。在我的情况下,理想情况下,我只是希望我的PHP脚本来制作日历条目。没有其他的应用程序&#34;参与。

我是否需要拥有Google_Client才能在Google日历中添加简单条目?这对我来说似乎过分,但也许这是实现这一目标的唯一方法。

我是否忽视了这个过程中的一步?或者我写的代码中是否有错误。任何帮助表示赞赏,包括示例链接。谢谢。

2 个答案:

答案 0 :(得分:1)

您正在尝试这样做:

$cal->events->insert

但是我没有一个名为$cal的对象。创建一个符合您尝试的新$cal实例,然后执行插入。

答案 1 :(得分:1)

您必须在Google Developer's Console上注册您的应用程序,如果您要使用new official PHP Client Library,则必须使用Google_Client()类并设置所有这些值才能访问API服务。

我建议你从这里开始:Write your First App

这些页面上的示例代码使用旧的PHP库,但您可以了解应该做什么并将它们转换为新的lib(大多只使用新的类名称 - 检查源代码)。