通过PHP使用Google日历公共日历对公共API密钥进行域级别身份验证

时间:2014-11-22 20:54:19

标签: php calendar google-api google-calendar-api

我正在尝试重写Google日历脚本以更新到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);

1 个答案:

答案 0 :(得分:0)

如果日历是公开的,那么您应该能够作为任何Google帐户进行身份验证并阅读日历,您无需像该特定用户那样进行身份验证。使用标准OAuth 2.0身份验证并请求脱机访问,以便您获得可用于刷新访问令牌的刷新令牌。