谷歌日历API - 服务帐户 - 没有谷歌应用程序域

时间:2015-01-21 18:29:36

标签: python google-api google-calendar-api google-api-python-client service-accounts

是否可以将Google Calendar API v3与服务帐户配合使用,而无需使用Google应用域?

基本上我想要做的是使用python脚本在我自己的日历上创建一个事件,而没有脚本提示我输入用户和密码......任何人都有任何想法?

我使用了这段代码,但没有运气:

import pprint
import pytz
import httplib2
import requests

from datetime import datetime, timedelta
from apiclient.discovery import build
from oauth2client.client import SignedJwtAssertionCredentials

with open('/home/xpto/service_account_certificate.pem', 'rb') as f:
  key = f.read()

service_account_name = '000000000000-j...@developer.gserviceaccount.com'

credentials = SignedJwtAssertionCredentials(
    service_account_name,
    key,
    scope=['https://www.googleapis.com/auth/calendar',
        'https://www.googleapis.com/auth/calendar.readonly'],
    sub='xpto@gmail.com')

http = httplib2.Http()
http = credentials.authorize(http)

service = build(serviceName='calendar', version='v3', http=http)

我收到此错误:

auth2client.client.AccessTokenRefreshError:unauthorized_client:请求中未经授权的客户端或范围

2 个答案:

答案 0 :(得分:1)

是 - 只需创建一个服务帐户,这将为您提供该帐户的电子邮件地址。

然后只需与该电子邮件地址共享您的日历,即可获得所需的任何权限。

答案 1 :(得分:0)

授予Google服务帐户访问权限。在我的情况下,我试图使用服务帐户将文件推送到谷歌驱动器。通过授权访问我的谷歌驱动器上的文件夹到服务帐户(电子邮件),我能够在我的帐户下查看文件并在谷歌驱动器上创建文件。