我可以使用Google API授权服务帐户嵌入日历iframe吗?

时间:2019-02-04 10:20:26

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

我正在尝试使用带有日历ID的嵌入代码将Google日历嵌入到iframe中。我已经创建了一个服务帐户,并已授予该帐户访问相关日历的权限。

我可以使用google api客户端成功验证服务帐户,并且可以从日历中获取事件。但是,我无法弄清楚如何进行身份验证,因此可以显示iframe。

require_once __DIR__ . '/googleapi/vendor/autoload.php';
$client = new Google_Client();

$client->setApplicationName('Google Calendar API PHP');
$client->setScopes(Google_Service_Calendar::CALENDAR_READONLY);
$client->setAuthConfig('my-credentials.json');
$client->setAccessType('offline');
$service = new Google_Service_Calendar($client);

?>
<iframe src="https://calendar.google.com/calendar/embed?src=calendarId&ctz=Europe%2FCopenhagen" style="border: 0" width="800" height="600" frameborder="0" scrolling="no"></iframe>`

结果只是一条消息,告诉我不允许我显示有问题的日历。

1 个答案:

答案 0 :(得分:0)

您似乎在做什么

<iframe src="https://calendar.google.com/calendar/embed?src=calendarId&ctz=Europe%2FCopenhagen" style="border: 0" width="800" height="600" frameborder="0" scrolling="no"></iframe>

就像您尝试在iframe中运行Google日历应用程序一样。那是行不通的,因为您将无法对其进行身份验证,而且我认为Google不会允许他们从iframe登录。

您应该做什么

您应该根据需要将应用程序设计为日历显示,然后将应用程序放置在iframe中。

<iframe src="https://yourcalendar.application.dk/awsomapp.php" style="border: 0" width="800" height="600" frameborder="0" scrolling="no"></iframe>

服务帐户只会授予您访问数据的权限,而不会授予您通过iframe来运行Google日历网站的权限。