Гугл календарь api acl - PullRequest
       9

Гугл календарь api acl

1 голос
/ 01 февраля 2020

Я пытался использовать API для внесения некоторых изменений в свой календарь Google.

Я создал проект в облачной консоли Google, включил API календаря и получил учетные данные. Я установил область действия OAuth:

scopes = ['https://www.googleapis.com/auth/calendar']
flow = InstalledAppFlow.from_client_secrets_file("client_secret.json", scopes=scopes)

И я получил обе учетные данные для своей учетной записи.

credentials = flow.run_console()

Я хотел использовать ACL для доступа к календарю, поэтому я попытался " получить "и" вставить "эти две функции. Коды следующие:

rule = service.acl().get(calendarId='primary', ruleId='ruleId').execute()

print('%s: %s' % (rule['id'], rule['role']))
rule = {
    'scope': {
        'type': 'group',
        'value': 'default',
    },
    'role': 'owner'
}

created_rule = service.acl().insert(calendarId='primary', body=rule).execute()

print(created_rule)

Однако результаты показывают, что у меня есть некоторые проблемы с частью доступа.

<HttpError 400 when requesting https://www.googleapis.com/calendar/v3/calendars/primary/acl/ruleId?alt=json
returned "Invalid resource id value.">

и

<HttpError 400 when requesting https://www.googleapis.com/calendar/v3/calendars/primary/acl?alt=json
returned "Invalid scope value.">

какой шаг я пропустил или сделал неправильно?

1 Ответ

0 голосов
/ 03 февраля 2020
  • Первая ошибка появляется в Acl.get всякий раз, когда вы указываете неверный ruleId. Поэтому убедитесь, что вы предоставляете действительный ruleId здесь:
rule = service.acl().get(calendarId='primary', ruleId='valid-rule-id').execute()

Если вы не знаете ruleId, вы можете найти его, позвонив по номеру Acl.list .

  • Что касается второй ошибки, проблема в том, что вы предоставляете неправильное тело запроса для Acl.insert . Если вы хотите поделиться этим календарем с group, вы должны указать действительный адрес электронной почты группы в scope.value. default не является допустимым значением. Тело вашего запроса должно быть примерно таким:
rule = {
    'scope': {
        'type': 'group',
        'value': 'group-email-address',
    },
    'role': 'owner'
}

Если вы нажмете About в соответствующей группе, вы найдете адрес электронной почты группы.

Я надеюсь, что это любая помощь.

...