我想訪問Google Calendar API以使用Python插入條目。我在Google API控制檯上創建了一個服務帳號,添加了一個私鑰,並將其下載。Google Calendar API - 通過服務帳戶訪問自己的日曆
但是,當我嘗試修改任何我的日曆,它是在同一個帳戶,我收到以下錯誤信息。閱讀作品。
代碼是
import httplib2
from oauth2client.client import SignedJwtAssertionCredentials
from apiclient.discovery import build
event = {
'summary' : 'Appointment',
'location' : 'Somewhere',
'start' : {
'dateTime' : '2012-09-03T10:00:00.000-07:00'
},
'end' : {
'dateTime' : '2012-09-03T10:25:00.000-07:00'
}
}
f = file("key.p12", "rb")
key = f.read()
f.close()
credentials = SignedJwtAssertionCredentials(
service_account_name='[email protected]',
private_key=key,
scope='https://www.googleapis.com/auth/calendar'
)
http = httplib2.Http()
http = credentials.authorize(http)
service = build('calendar', 'v3', http=http)
request = service.events().insert(calendarId='[email protected]', body=event)
response = request.execute()
print(response)
錯誤消息:
apiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/calendar/v3/calendars/[email protected]/events?alt=json returned "Forbidden">
我本來以爲我可以用這個服務帳戶訪問自己的數據,但它似乎不是。
谷歌稱,該服務帳戶已創建
後,您還將有機會 與私鑰相關聯的客戶端ID。編碼您的應用程序時,您將需要 。 - https://developers.google.com/accounts/docs/OAuth2?hl=de#scenarios
我搜索了大約2個小時,但它似乎記錄非常糟糕。有沒有一種方法可以在沒有用戶交互的情況下通過Google Calendar API插入新事件(又名3腳OAuth)還是有辦法解決這個問題?
我剛剛發現不推薦使用ClientLoging。爲什麼Google讓它變得困難?
親切的問候
我跟隨你的解決方案,我的憑證在文件中是noe。你能告訴我如何加載那些文件,然後使用'credentials.authorize()'。 – user26
我很久以前寫過一個例子,你可以在https://github.com/Rentier/ReindeerIkenga找到它 – reindeer