2017-03-04 109 views
1

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

我已经设法使用Google_Service_Oauth2::USERINFO_EMAIL范围提取客户端ID,但我怎样才能在以后使用它来获取用户日历?那是甚至我应该怎么做呢,还是我朝着错误的方向前进?

回答

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 
+0

嗨@Morfinismo,谢谢你的帮助!您能否展示一个代码示例,说明如何使用该令牌以稍后访问用户日历?我似乎无法弄清楚。 – Cellydy

+0

@凯莉我已经更新了答案。请帮助我来帮助你。请告诉我们你在做什么,这样我们可以更好地帮助你。 – Morfinismo

相关问题