Google API离线访问用户数据

时间:2017-03-04 10:20:11

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

我正在处理需要访问用户Google日历的权限的应用程序。我使用PHP客户端,并且能够离线访问这些日历。我的问题如下:一旦我获得许可,我如何在以后访问特定用户的日历?如何在需要时为特定用户(已经授予我访问日历的权限)创建客户端对象?

我设法使用Google_Service_Oauth2::USERINFO_EMAIL范围提取客户端ID,但我怎样才能使用它来获取日期后的用户日历?这是我应该如何去做,还是我朝着错误的方向前进?

1 个答案:

答案 0 :(得分:1)

您可以采取几种方法来实现这一目标。在您的情况下,由于您只想访问用户日历,因此您应在请求中包含的范围是指定的范围here。您的客户端配置应该有$client->setAccessType("offline");$client->setApprovalPrompt("force");

允许访问后,您将收到一个可以交换访问令牌的访问代码。返回的访问令牌是您需要保存在数据库中的令牌。稍后,如果用户需要使用日历服务,您只需使用已保存的访问令牌。

如果您需要具体的代码,请发布代码细节,因为我们无法完全理解您要实现的目标,而不会查看您的实现。

以下面的代码片段为例。

/*
 * @$accessToken - json encoded array (access token saved to database)
*/

$client = new Google_Client();
$client->setAuthConfig("client_secret.json");
$client->addScope("https://www.googleapis.com/auth/calendar");

$_SESSION["access_token"] = json_decode($accessToken, true);

$client->setAccessToken($_SESSION['access_token']);
$service = new Google_Service_Calendar($client);

//REST OF THE PROCESS HERE