Php 谷歌日历服务客户端以404响应 目标
我正在尝试集成到我的公司网站,以便在某些事件上自动创建事件 这些事件将被添加到公司日历并显示给用户,因此我不需要用户进行身份验证,我不会在他们自己的日历上工作 我所做的Php 谷歌日历服务客户端以404响应 目标,php,http-status-code-404,google-calendar-api,google-client,Php,Http Status Code 404,Google Calendar Api,Google Client,我正在尝试集成到我的公司网站,以便在某些事件上自动创建事件 这些事件将被添加到公司日历并显示给用户,因此我不需要用户进行身份验证,我不会在他们自己的日历上工作 我所做的 创建了一个OAuth 2.0服务帐户,如Google文档中所述 创建、下载并将凭据文件添加到我的项目中,并将其路径添加到环境变量GOOGLE_APPLICATION_credentials 遵循和。 以下是我的源代码的简短版本: $client = new Google_Client(); $client->setA
- 创建了一个OAuth 2.0服务帐户,如Google文档中所述
- 创建、下载并将凭据文件添加到我的项目中,并将其路径添加到环境变量
GOOGLE_APPLICATION_credentials
- 遵循和。
以下是我的源代码的简短版本:
与示例(第43:52行)相比,我没有手动检查凭据文件,而是直接检查$client = new Google_Client(); $client->setApplicationName("XXX"); $client->addScope(Google_Service_Calendar::CALENDAR); // "https://www.googleapis.com/auth/calendar" $client->useApplicationDefaultCredentials(); $service = new Google_Service_Calendar($client); $event = new Google_Service_Calendar_Event(/* array with event data */); $calendarId = /* calendar id taken from calendar Settings and Sharing on calendar.google.com*/; $event = $service->events->insert($calendarId, $event);
useApplicationDefaultCredentials()
[2020-10-19 14:29:19] local.ERROR: {
"error": {
"errors": [
{
"domain": "global",
"reason": "notFound",
"message": "Not Found"
}
],
"code": 404,
"message": "Not Found"
}
}
{"userId":2,"exception":"[object] (Google_Service_Exception(code: 404): {
\"error\": {
\"errors\": [
{
\"domain\": \"global\",
\"reason\": \"notFound\",
\"message\": \"Not Found\"
}
],
\"code\": 404,
\"message\": \"Not Found\"
}
}
at /var/www/vendor/google/apiclient/src/Google/Http/REST.php:123)
[stacktrace]
它似乎调用了错误的api端点,因为404
是未找到页面的响应
日历ID
我想说清楚,这里是我拿日历id的地方
据我所知,服务帐户没有自己的日历,因此需要授予他们访问特定组织的权限才能创建/读取事件
如果这是针对内部应用程序(并且您是组织的管理员),则可以按照以下步骤授予您的服务帐户访问组织日历的权限:
然后,G套件域的超级管理员必须完成以下步骤:
从您的G套件域,转到主菜单>安全>API控件
在域范围的委派窗格中,选择管理域范围的委派。
单击添加新
在“客户端ID”字段中,输入服务帐户的客户端ID。您可以在中找到服务帐户的客户端ID
在OAuth范围(逗号分隔)字段中,输入应用程序应被授予访问权限的范围列表。例如,如果您的应用程序需要对Google Drive API和Google Calendar API进行全域完全访问,请输入:https://www.googleapis.com/auth/drive, https://www.googleapis.com/auth/calendar
单击“授权”
您还需要按照以下步骤模拟下的特定用户,以便为有权访问相关日历的用户检索令牌
如果这是一个打算由多个组织安装的应用程序,你应该考虑使用一个管理的OAuthService,比如(我在哪里工作)。Xkit特别具有一个抽象的功能,它将所有这些步骤(包括IT管理员的分步指南)从开发人员那里抽象出来,在一个API调用中为您提供一个工作访问令牌
作为补充说明,您引用的服务帐户示例使用Books API中的公共数据,因此它不需要用户授权,只需将自己标识为应用程序。是的,我发现了,所以我回答了自己的问题,但方式不对,所以我自己的答案被否决并取消