从Google服务帐户编辑Google日历活动:403

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了从Google服务帐户编辑Google日历活动:403相关的知识,希望对你有一定的参考价值。

我想在服务帐户的Google日历中创建新活动。我可以正确访问并打印所有日历列表。但是当我想创建一个新事件时,响应是403 Forbidden。

我的代码:

require_once 'src/Google_Client.php';
require_once 'src/contrib/Google_CalendarService.php';

session_start();

const CLIENT_ID = 'XXXXXXXXXX.apps.googleusercontent.com';
const SERVICE_ACCOUNT_NAME = 'XXXXXXXXXXXX@developer.gserviceaccount.com';

const KEY_FILE = 'google_src/XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX-privatekey.p12';

$client = new Google_Client();
$client->setApplicationName("APP_NAME");

if (isset($_SESSION['token'])) {
 $client->setAccessToken($_SESSION['token']);
}

$key = file_get_contents(KEY_FILE);
$client->setClientId(CLIENT_ID);
$client->setAssertionCredentials(new Google_AssertionCredentials(
  SERVICE_ACCOUNT_NAME,
  'https://www.google.com/calendar/feeds/MY_CALENDAR_ID/private/full/',
  $key)
);

$client->setClientId(CLIENT_ID);
$cal = new Google_CalendarService($client);
$event = new Google_Event();
$event->setSummary('Bon dia pel matí!');
$event->setLocation('Somewhere');
$start = new Google_EventDateTime();
$start->setDateTime('2012-08-06T10:00:00.000-07:00');
$event->setStart($start);
$end = new Google_EventDateTime();
$end->setDateTime('2012-09-06T10:25:00.000-07:00');
$event->setEnd($end);

$createdEvent = $cal->events->insert(CALENDAR_NAME, $event);

和服务器响应:

(403) Forbidden

有任何想法吗?也许其他范围,或允许编辑事件(我不知道我可以配置这个,我已经搜索过,承诺)

当然,我的日历是公共日历。

欢迎任何帮助:)

谢谢!

答案

我解决了它,问题不是代码,它运行正常。

问题是分享我的日历。我不知道的东西。

要允许您从服务帐户修改日历活动,但没有足够的步骤来完成您在Google Api控制台中执行的所有步骤,您必须将日历配置(日历配置 - >共享此日历)的权限授予指定给Google的电子邮件帐户Api控制台(电子邮件地址)。

如果是商业帐户,这可能是一个问题,那么您必须联系帐户管理员。

此处显示的代码工作正常,所以我希望它可以帮助某人,只需记住您必须使用475版本的Google Api客户端。

你可以在这个链接找到:http://google-api-php-client.googlecode.com/svn/trunk/src/

以上是关于从Google服务帐户编辑Google日历活动:403的主要内容,如果未能解决你的问题,请参考以下文章

PHP Google 服务帐户身份验证日历 API

是否有任何应用程序从Google日历活动创建(假)传入短信?

使用服务帐户插入 Google 日历条目

与会者在使用服务帐户、谷歌日历 API 创建活动时未收到会议邀请

Google OAuth 2.0 服务帐户 - 日历 API(PHP 客户端)

G Suite帐户在Calendar API中缺少displayName参数