Google Calendar APIにアクセスして、Pythonで項目を挿入したいと考えています。 サービスアカウントをGoogle APIコンソールに作成し、秘密鍵を追加してダウンロードしました。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='[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">
私は、このサービスのアカウントで自分のデータにアクセスできることを考えているだろうが、ではないように思われます。
Googleはサービスアカウントが作成された
した後、あなたはまた、秘密鍵に関連付けられたクライアントIDへのアクセス を持っているだろうと主張しています。アプリケーションをコーディングする場合は、両方とも が必要です。 - https://developers.google.com/accounts/docs/OAuth2?hl=de#scenarios
私は約2時間をグーグルが、非常に悪い文書化しているようです。ユーザーインタラクション(別名3足のOAuth)なしでGoogleカレンダーAPI経由で新しいイベントを挿入する方法はありますか、それを修正する方法はありますか?
廃止されたClientLogingが見つかりました。なぜGoogleはそれを難しくしていますか?
種類は、私は1つは、JSONに結果の資格情報をダンプし、あなたがそれらを必要とするたびにそれらを読み込む場合は3段のOAuthが動作することを実現
私はurソリューションに従っており、私の資格情報はファイルにはありません。そのファイルからそれらのファイルを読み込み、 'credentials.authorize()'を使う方法を教えてください。 – user26
私は古い例を書いています。https://github.com/Rentier/ReindeerIkengaで見つけることができます – reindeer