我正在尝试重写谷歌日历脚本以更新到 API v3。
我不想强迫我的用户使用 oAuth 2 例程一次验证一个日历。 他们应该能够将日历设置为公共日历,而不必这样做。 该脚本的目标是公开显示日历,因此它不需要复杂的身份验证,因为数据无论如何都已经公开。
我可以使用使用服务器 IP 地址的 API 密钥成功执行此操作。 但是许多用户共享主机,他们的IP经常更改。 我宁愿使用基于域名的 API 密钥。 这可能吗?
<?php
// set to Public API access with IP address at
// https://console.developers.google.com/project/MYPROJECT/apiui/credential
// works
$url = 'https://www.googleapis.com/calendar/v3/calendars/494h1li4bohjc380cl8bntq94k%40group.calendar.google.com/events?key=MYAPIKEY_XXXXXXXXXXXXXXXXXXXXXXXXXX&maxResults=100&singleEvents=true&orderBy=startTime&timeMin=2014-11-18T14:00:00-00:00';
// set to Public API access with "Browser Key" and referer *.mydomainname.com/*
// at https://console.developers.google.com/project/MYPROJECT/apiui/credential
// does not work
$url = 'https://www.googleapis.com/calendar/v3/calendars/494h1li4bohjc380cl8bntq94k%40group.calendar.google.com/events?key=MYAPIKEY_YYYYYYYYYYYYYYYYYYYYYYYYYY&maxResults=100&singleEvents=true&orderBy=startTime&timeMin=2014-11-18T14:00:00-00:00';
$curl = curl_init();
curl_setopt($curl, CURLOPT_URL, $url);
curl_setopt($curl, CURLOPT_RETURNTRANSFER, true);
curl_setopt($curl, CURLOPT_HEADER, false);
$data = curl_exec($curl);
curl_close($curl);
print_r($data);
如果日历是公开的,那么您应该能够以任何Google帐户进行身份验证并读取日历,而无需以该特定用户的身份进行身份验证。使用标准 OAuth 2.0 身份验证并请求脱机访问,以便获得可用于刷新访问令牌的刷新令牌。