0

我正在使用 php google calendar api 的 v3。

在日历所有者授权后,我将带有刷新令牌的 access_token 保存在数据库中。

当任何人显示日历页面时,我都有一些有效的代码

$client = new apiClient();
$client->setApplicationName("My Calendar");
$client->setAccessType('offline');
$client->setAccessToken( $_SESSION['google']['access_token'] );
$calService = new apiCalendarService($client);
$optParams = array('timeMin' => $gstart, 'timeMax'=> $gend);
$events = $calService->events->listEvents($_SESSION['google']['google_cal_id'], $optParams);

我在文档中看到,在某些时候我可能必须使用刷新令牌(我在数据库中拥有)。我不知道如何使用这个令牌以及何时使用。setAccessToken 会在某个时候抛出异常吗?什么是最好的测试方法谢谢

4

2 回答 2

2

如果您希望在用户重新进行身份验证的情况下保持身份验证处于活动状态,则使用刷新令牌。例如,我们有一个使用谷歌分析 api 的报告工具。我需要每 10 分钟对其运行一次查询,因此一旦用户对我们的应用程序进行身份验证,我就会使用刷新令牌,这样即使用户未登录,我的自动查询也可以运行。基本上,刷新令牌用于保持会话处于活动状态无需用户交互。我希望这是有道理的。

于 2012-08-17T18:45:19.343 回答
2

访问令牌在 3600 秒或一小时后过期。但是您可以使用刷新令牌来获取新的访问令牌,而无需用户重新进行身份验证。

有关如何使用 php 获取刷新令牌的详细信息,请查看这篇文章中接受的答案: Automatically refresh token using google drive api with php script

如果您使用 REST API 而不是 PHP SDK,它基本上会将您的刷新令牌、client_id、秘密发送到https://accounts.google.com/o/oauth2/token 如页面底部所述

除非用户撤销或您以编程方式撤销它,否则刷新令牌不会过期。

于 2013-12-10T12:03:37.467 回答