我正在使用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会在某个时候抛出异常吗?测试这个的最佳方法是什么 感谢
答案 0 :(得分:2)
如果要在没有用户重新验证的情况下保持身份验证处于活动状态,则使用刷新令牌。例如,我们有一个使用google analytics api的报告工具。我需要每隔10分钟对其运行一次查询,因此一旦用户对我们的应用进行身份验证,我就会使用刷新令牌,以便即使用户未登录也可以运行自动查询。基本上,刷新令牌用于保持会话处于活动状态没有用户互动。我希望这是有道理的。
答案 1 :(得分:2)
访问令牌在3600s或一小时后到期。但您可以使用刷新令牌获取新的访问令牌,而无需用户重新进行身份验证。
有关如何使用php获取刷新令牌的详细信息,请查看此帖子中接受的答案: Automatically refresh token using google drive api with php script
如果您使用REST API而不是PHP SDK,它基本上将您的刷新令牌client_id秘密发送到https://accounts.google.com/o/oauth2/token,如页面底部所述here
刷新令牌不会过期,除非用户撤消它或您以编程方式撤销它。