使用googleapiphp客户端创建事件时管理提醒的正确方法


Proper way to manage reminder when creating event with google-api-php-client

我很长一段时间以来一直在我的php web应用程序中使用谷歌api php客户端来插入日历事件、驱动文件、发送邮件等。一切都很好。

关于日历,我收到了用户的请求,要求删除特定类型事件的默认提醒。

我使用了以下过程:我的谷歌应用程序的所有用户都与一个特定的帐户共享了他们的日历,我使用这个特定的地址来设置库。

我无法使用文档中描述的指定方法:

https://developers.google.com/google-apps/calendar/v3/reference/events/insert

以下代码:

$event = new Google_Service_Calendar_Event(array(
  'summary' => 'Google I/O 2015',
  'location' => '800 Howard St., San Francisco, CA 94103',
  ...
  ...
  'reminders' => array(
    'useDefault' => FALSE,
    'overrides' => array(
      array('method' => 'email', 'minutes' => 24 * 60),
      array('method' => 'popup', 'minutes' => 10),
    ),
  ),
));

只有当我在谷歌页面上的"尝试"中直接使用目标帐户和OAuth时,它才会起作用。

假设我想为创建一个活动bla@bla.com如果不使用try-it-google页面检索他的默认提醒,我必须使用bla@bla.com到OAuth。在这种情况下,不使用默认提醒,我得到了2个提醒(电子邮件24*60和弹出窗口10),正如预期的那样。

如果我将我的特定帐户用于OAuth,我可以在上创建事件bla@bla.com帐户(因为日历是共享的),但在这种情况下,useDefault=>false似乎被省略了,默认提醒设置在bla@bla.com使用,而不是预期的2。。。

由于使用我的webApp或谷歌try it页面的结果是一样的,我认为这不是对谷歌api php客户端的错误使用。

如有任何帮助,我们将不胜感激。

Seb

GitHub中实际上存在一个关于使用setUseDefault(false);的问题,并且基于线程

使用string而不是boolean似乎可以解决这个问题。

这是通过更换解决的

$set_reminders->setUseDefault(false);

带有

$set_reminders->setUseDefault("false");

我希望这对你也有用。