Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php Calendarlist返回带有服务帐户的空结果集_Php_Google Api_Google Calendar Api_Google Api Php Client_Service Accounts - Fatal编程技术网

Php Calendarlist返回带有服务帐户的空结果集

Php Calendarlist返回带有服务帐户的空结果集,php,google-api,google-calendar-api,google-api-php-client,service-accounts,Php,Google Api,Google Calendar Api,Google Api Php Client,Service Accounts,我正在尝试在google日历帐户和google日历API之间建立连接,以便根据google日历包含的事件更新MySQL数据库。似乎我的客户已经设置好了,现在我必须获取日历列表,但我在这里遇到了麻烦 我从quickstart.php中所做的工作以及google文档中所解释的内容中获得了灵感,尝试了一些测试 问题是,当我使用getItems()方法时,我的所有请求都返回一个空结果 我的代码: 我的目标是在获取日历列表时,获取与日历列表中每个日历相关的每个事件,以更新我的数据库。 谢谢 G.G您需要记

我正在尝试在google日历帐户和google日历API之间建立连接,以便根据google日历包含的事件更新MySQL数据库。似乎我的客户已经设置好了,现在我必须获取日历列表,但我在这里遇到了麻烦

我从quickstart.php中所做的工作以及google文档中所解释的内容中获得了灵感,尝试了一些测试

问题是,当我使用getItems()方法时,我的所有请求都返回一个空结果

我的代码: 我的目标是在获取日历列表时,获取与日历列表中每个日历相关的每个事件,以更新我的数据库。 谢谢
G.G

您需要记住的是,服务帐户不是您自己的。服务帐户是虚拟用户。该用户有自己的google日历帐户、驱动器帐户,可能还有更多

如果你做了一个

$calendar = $service->calendars->get('primary');
echo $calendar->getSummary();
您将看到,实际上您的服务帐户有一个日历。默认情况下,它没有日历列表中的任何内容

如果你想让它访问你的个人谷歌日历,那么你需要访问谷歌日历网站,并与服务帐户的电子邮件地址共享日历。然后它应该能够执行以下操作,确保在设置中记录与它共享的日历的日历id

$calendar = $service->calendars->get('calendarid');

echo $calendar->getSummary();
如果你真的想在日历列表中添加它,你可以添加它

$calendarListEntry = new Google_Service_Calendar_CalendarListEntry();
$calendarListEntry->setId("calendarId");

$createdCalendarListEntry = $service->calendarList->insert($calendarListEntry);

echo $createdCalendarListEntry->getSummary();
服务帐户设置 正如我提到的,服务帐户需要预先授权。您需要转到Google日历网站,并在您希望它能够访问的日历设置下,您需要与它共享日历,如图所示

有用的链接

欢迎来到stack“它不工作”对我们来说真的很难帮助。请编辑您的问题,包括您的代码,并描述您在解决方案错误消息中遇到的任何问题。你可能想读“对不起”,但我在提出问题时犯了一些错误,现在应该更好。对不起,我仍然不理解你的问题。看起来您正在从api请求数据。您没有得到任何数据吗?您发布的代码与事件或mysql无关。您需要为我们提供一个可以用来查看问题的日历列表。是的,我想获取帐户的日历列表,但当我尝试时,它不会返回任何数据。但是,当我使用函数“try it”直接在google CalendarList API上尝试时,它会返回我期望的数据。我是否在上面的代码中做错了什么?您使用的是服务帐户吗?您是否使用与“Try it”中使用的用户完全相同的用户登录?我尝试了您使用get方法提供的内容,我得到了我想要的主日历。但事实上,这个日历链接到其他几个日历,我想从日历列表中得到它,因为当我有这些日历时,我需要提取其中的每个事件来更新我的数据库。然后,如果你真的想要它,你需要插入日历列表。所有日历列表实际上是用来显示在谷歌日历网站左下角的列表。由于服务帐户无法使用谷歌日历网站,因此默认情况下,其日历列表中没有任何内容。日历之间没有链接。你对谷歌日历有些误解,如果你知道你想要从中获取活动的日历,为什么不直接使用一个呢?是的,我不明白,你之前也说过:“你使用的是服务帐户吗?你登录的用户与你在“试用”中使用的用户完全相同吗?”这似乎不是因为当我试图在主日历上获取事件时,很多数据都受到保护,我无法访问它。当我在google calendar api的网站上尝试“Try it”功能时,我只是检查了OAuth2.0并按下了“execute”,我怎么知道google是怎么做这个请求的呢?似乎我已经找到了一种方法,通过使用服务帐户来查找我的所有数据,并执行这个请求``$service->events->listents($calendarId)``只是在循环中,每次调用$calendarId时都会修改它
$calendarListEntry = new Google_Service_Calendar_CalendarListEntry();
$calendarListEntry->setId("calendarId");

$createdCalendarListEntry = $service->calendarList->insert($calendarListEntry);

echo $createdCalendarListEntry->getSummary();