我正在处理需要访问用户Google日历的权限的应用程序。我使用PHP客户端,并且能够离线访问这些日历。我的问题如下:一旦我获得许可,我如何在以后访问特定用户的日历?如何在需要时为特定用户(已经授予我访问日历的权限)创建客户端对象?
我设法使用Google_Service_Oauth2::USERINFO_EMAIL
范围提取客户端ID,但我怎样才能使用它来获取日期后的用户日历?这是我应该如何去做,还是我朝着错误的方向前进?
答案 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