Google Calendar api acl

问题描述 投票:1回答:1

我正在尝试使用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.">

我想念或做错了什么步骤?

python google-calendar-api acl
1个回答
0
投票
  • 当您指定无效的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,则会找到该组的电子邮件地址。

我希望这会有所帮助。

© www.soinside.com 2019 - 2024. All rights reserved.