Google Calendar APIにアクセスして、Pythonでエントリを挿入したいと思います。Google 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='423291807109-XXXXXXXXXXXXXXXXxx@developer.gserviceaccount.com',
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='XXXXXXXXXXXXXXXXXX@group.calendar.google.com', body=event)
response = request.execute()
print(response)
エラーメッセージは次のとおりです。
apiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/calendar/v3/calendars/XXXXXXXXXXXXXXXXXXX@group.calendar.google.com/events?alt=json returned "Forbidden">
このサービスアカウントで自分のデータにアクセスできると思っていたのですが、そうではないようです。
グーグルはそれを主張します
サービスアカウントが作成されると、秘密鍵に関連付けられたクライアントIDにもアクセスできるようになります。アプリケーションをコーディングするときは、両方が必要になります。-https://developers.google.com/accounts/docs/OAuth2?hl = de#scenarios
私は約2時間グーグルで検索しましたが、それは非常に悪い記録になっているようです。ユーザーの操作なしでGoogleカレンダーAPIを介して新しいイベントを挿入する方法(別名3本足のOAuth)はありますか、それとも修正する方法はありますか?
非推奨のClientLogingを見つけました。なぜグーグルはそれをそんなに難しくしているのですか?
敬具