我想构建一个应用程序,在用户未登录时代表他们管理谷歌日历中的约会。
该应用程序将是一项预订服务,订阅用户(我们的服务提供商)将预订他们不可用的时间,客户将看到服务提供商的谷歌日历的空闲/繁忙表示
该应用程序需要能够创建、删除和读取约会。
我已经去了谷歌开发者控制台,有了工作代码,它会弹出谷歌权限屏幕,然后重定向到一个Url,成功地创建了一个新的约会。
我可以访问其他日历,但前提是它们当时已登录谷歌服务。
$client = new Google_Client();
$client->addScope('https://www.googleapis.com/auth/calendar');
$service = new Google_Service_Calendar($client);
$authUrl = $client->createAuthUrl();
如果用户正在管理自己的日历,则可以正常工作。但是,我想代表他们管理预约。这将包括其他方在日历中输入预约,即日历未登录时。
我需要的是一个持久的权限,让应用程序获得对用户日历的持久访问权限?
有人知道这可能吗?如果我能想办法解决这个问题,我将不胜感激。
OAuth 2.0服务帐户是访问用户帐户的正确方法:
https://developers.google.com/accounts/docs/OAuth2ServiceAccount
您需要授权服务帐户客户端id访问必要的日历API作用域:
https://developers.google.com/drive/web/delegation#delegate_domain-宽权限_to_your_service_account
然后,您的服务帐户可以模拟用户并代表他们执行日历操作:
https://developers.google.com/drive/web/delegation#instantiate_a_drive_service_object
这些文档描述了谷歌硬盘,但日历的流程是相同的。