Я пытаюсь написать некоторый код Python, который создает календарь (в моей учетной записи) и добавляет к нему события.
Я продолжаю получать следующую ошибку 403:
Daily Limit for Unauthenticated Use Exceeded. Continued use requires signup
Это происходит , а не , когда я создаю новые календари:
created_calendar = service.calendars().insert(body=calendar).execute()
Но возникает ошибка , когда я пытаюсь создать события в календаре, который я простоmade:
event = service.events().insert(calendarId=created_calendar, body=event).execute()
Как и в других потоках справки, я выполнил все правильные аутентификации (ключ API, OAuth, служебная учетная запись):
И мой дневной лимит намного превышает количество отправляемых мной запросов:
Я указываю OAuthфайл credentials.json при создании моего клиента API.Я указываю переменную окружения GOOGLE_APPLICATION_CREDENTIALS
на ключ учетной записи службы (также json) перед запуском.
Я не уверен, как еще я могу аутентифицировать себя ... некоторая помощь действительно будет оценена!
РЕДАКТИРОВАТЬ
Это мой сценарий (и я считаю минимальным примером ошибки) на случай, если он будет полезен:
import datetime
import pytz
import pickle
import os.path
from googleapiclient.discovery import build
from google_auth_oauthlib.flow import InstalledAppFlow
from google.auth.transport.requests import Request
# If modifying these scopes, delete the file token.pickle.
# Add .readonly for read only
SCOPES = ['https://www.googleapis.com/auth/calendar']
def build_cal_service():
creds = None
# The file token.pickle stores the user's access and refresh tokens, and is
# created automatically when the authorization flow completes for the first
# time.
if os.path.exists('token.pickle'):
with open('token.pickle', 'rb') as token:
creds = pickle.load(token)
# If there are no (valid) credentials available, let the user log in.
if not creds or not creds.valid:
if creds and creds.expired and creds.refresh_token:
creds.refresh(Request())
else:
flow = InstalledAppFlow.from_client_secrets_file(
'credentials.json', SCOPES)
creds = flow.run_local_server(port=0)
# Save the credentials for the next run
with open('token.pickle', 'wb') as token:
pickle.dump(creds, token)
service = build('calendar', 'v3', credentials=creds)
return service
def main():
service = build_cal_service()
calendar = {
'summary': 'TEST CAL',
'timeZone': 'America/Los_Angeles'
}
created_calendar = service.calendars().insert(body=calendar).execute()
time = datetime.datetime(
year=2019,
month=11,
day=9,
hour=21,
tzinfo=pytz.timezone('US/Pacific'))
event = {
'summary': 'test summary',
'description': 'test description.',
'start': {
'dateTime': time.isoformat(),
},
'end': {
'dateTime': (time + datetime.timedelta(hours=1)).isoformat(),
},
'attendees': [
{'email': 'test1@example.com'},
{'email': 'test2@example.com'},
],
}
event = service.events().insert(calendarId=created_calendar, body=event).execute()