Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/259.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 谷歌日历API-禁止-服务帐户错误_Php_Api_Google Calendar Api_Http Status Code 403 - Fatal编程技术网

Php 谷歌日历API-禁止-服务帐户错误

Php 谷歌日历API-禁止-服务帐户错误,php,api,google-calendar-api,http-status-code-403,Php,Api,Google Calendar Api,Http Status Code 403,我尝试通过运行服务器端的php使用Google日历API 我创建了一个服务帐户并使用它的凭据(通过json文件)。我没有使用G套件 现在我可以列出我日历上的事件,但当我尝试创建新事件时,会出现一个禁止的错误 我将我的日历与服务帐户的电子邮件地址共享,并授予它日历的管理员权限。我不知道我做错了什么!我就是不能让它工作。我也在使用范围Google_服务_Calendar::Calendar 例外情况:403-禁止 我不知道如何调试这个问题以及如何进一步进行 你能帮我吗 编辑:这是我的电话号码: pu

我尝试通过运行服务器端的php使用Google日历API

我创建了一个服务帐户并使用它的凭据(通过json文件)。我没有使用G套件

现在我可以列出我日历上的事件,但当我尝试创建新事件时,会出现一个禁止的错误

我将我的日历与服务帐户的电子邮件地址共享,并授予它日历的管理员权限。我不知道我做错了什么!我就是不能让它工作。我也在使用范围Google_服务_Calendar::Calendar

例外情况:403-禁止

我不知道如何调试这个问题以及如何进一步进行

你能帮我吗

编辑:这是我的电话号码:

putenv('GOOGLE_APPLICATION_CREDENTIALS=../google-service-account.json');

$client = new Google_Client();
$client->useApplicationDefaultCredentials();
$client->setScopes([Google_Service_Calendar::CALENDAR]);
$client->setRedirectUri('urn:ietf:wg:oauth:2.0:oob');
$service = new Google_Service_Calendar($client);

$event = new Google_Service_Calendar_Event([
  'summary' => $name,
  'location' => $location,
  'description' => $desc,
  'start' => [
    'dateTime' => $start,
    'timeZone' => $timezone,
  ],
  'endTimeUnspecified' => true,
]);

$calendar = $service->calendars->get($calendarId);
$settings = $service->settings->listSettings();
$list = $service->acl->listAcl($calendarId);
$event = $service->events->insert($calendarId, $event);
前三个服务调用(
$calender=…
$settings=…
$list=…
)工作正常,在acl中,我还可以看到我的服务帐户的电子邮件地址具有所有权限(角色:所有者)。但是最后一行
$event=…
给出了禁止的错误

'endTimeUnspecified' => true,
是什么导致了你的问题(这是谷歌的错,但你不能告诉他们)

如果你换成

 'end' => [
'dateTime' => $start2,
'timeZone' => $timezone,
 ],
它会起作用的(我知道这不是你想要的,也许你可以想出一种方法来调整$start2,给你你想要的作为结束时间,但endTimeUnspecified是什么导致它说403禁止的)

是什么导致了你的问题(这是谷歌的错,但你不能告诉他们)

如果你换成

 'end' => [
'dateTime' => $start2,
'timeZone' => $timezone,
 ],

它会起作用的(我知道这不是你想要的,也许你可以想办法调整$start2,给你你想要的结束时间,但未指定的结束时间是导致它说403 forbidden的原因。你能发布你到目前为止的代码吗?在没有看到任何东西的情况下很难判断出什么是错的。好的,我刚刚编辑了我的问题并添加了代码在那里。您好。您能发布到目前为止的代码吗?很难在看不到任何内容的情况下判断出哪里出了问题。好的,我刚刚编辑了我的问题并在那里添加了代码。感谢您的帮助,这解决了我的问题。问题是,如果API中出现类似“endTimeUnspecified”的选项导致错误,为什么会出现这样的选项^^?这是其中之一那些在内部服务器上工作但在外部服务器上不工作的东西——我完全是偶然发现的。当我想要一整天时,我将结束时间设置为开始+20小时(我甚至设置了end+days,它适用于多日预约感谢您的帮助,这解决了我的问题。问题是,如果API中有类似“endTimeUnspecified”的选项导致错误,为什么API中会有这样的选项^^?它是在内部服务器上工作,但在外部服务器上不工作的东西之一——我完全是通过事故。当我想要一整天时,我将结束时间设置为开始+20小时(我甚至设置了结束+20天,它适用于多日预约)