在我们的组织中,我们使用“Google Apps for Work”,我需要定期导出所有员工日历数据,以便自动统计他们在会议上花费的时间。
如果有可能,你可以提示我吗? 目前,the official solution I found要求每个用户通过OAuth登录,并授予我的应用程序访问其日历的权限,更重要的是,授予的凭据将在某个时间到期。
但是,我需要获得相同的结果,但作为具有管理员权限的“后端服务”,没有用户登录和应用批准,是否可能? 或者谷歌日历被认为是私有的,甚至是“Google Apps for Work”,每个用户都需要单独授予权限?
提前谢谢! 此致
答案 0 :(得分:2)
但是,我需要获得相同的结果,但是如果没有用户登录和应用审批,具有管理员权限的“后端服务”,是否可以?
您正在寻找的是service accounts。使用服务帐户,您可以代表域中的用户访问数据,有时也称为“委派域范围的权限”。幸运的是,您可以将其用于Google Apps for Work。
如果您有Google Apps域 - 如果您使用的是Google Apps for Work,则可以使用 示例 - Google Apps域的管理员可以授权 应用程序代表Google Apps中的用户访问用户数据 域。例如,使用Google Calendar API的应用程序 将事件添加到Google Apps域中所有用户的日历 将使用服务帐户访问Google Calendar API 代表用户
以下是using a P12 file时使用Python的代码段:
from oauth2client.service_account import ServiceAccountCredentials
client_email = '123456789000-abc123def456@developer.gserviceaccount.com'
scopes = ['https://www.googleapis.com/auth/sqlservice.admin']
credentials = ServiceAccountCredentials.from_p12_keyfile(
client_email, '/path/to/keyfile.p12', scopes=scopes)
Retrieving all calendar resources
要检索与特定日历关联的资源条目的第一页,请将以正斜杠结尾的HTTP GET请求发送到资源订阅源URL。如验证中所述,包括Authorization标头。
GET https://apps-apis.google.com/a/feeds/calendar/resource/2.0/{domain name}/
或者,您可以将start参数中带有空字符串的HTTP GET请求发送到资源提要URL。
GET https://apps-apis.google.com/a/feeds/calendar/resource/2.0/{domain name}/?start=""