Google 日历:"Request had insufficient authentication scopes." 移动到 calendar.readonly
Google Calendar: "Request had insufficient authentication scopes." when moving to calendar.readonly
最初,我有以下范围:
SCOPES = ['https://www.googleapis.com/auth/calendar']
使用代码:
credentials = google.oauth2.credentials.Credentials(
**flask.session['credentials'])
service = build('calendar', 'v3', credentials=credentials)
events_result =service.calendarList().list().execute()
events = events_result.get('items', [])
效果很好。但是,因为我不需要访问 write/delete 用户日历 & 以防止用户获取
See, edit, share and permanently delete all the calendars that you can access using Google Calendar
&为了保护他们的安全,我将范围缩小到
SCOPES = ['https://www.googleapis.com/auth/calendar.events.readonly']
使用相同的代码。但是,现在我得到:
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/calendar/v3/users/me/calendarList?alt=json returned "Request had insufficient authentication scopes.". Details: "Request had insufficient authentication scopes.">
尽管 doc 提到您可以执行此类代码来检索具有两个范围的事件。
修改点:
- 当我看到您的脚本和范围时,您正在尝试从范围为
https://www.googleapis.com/auth/calendar.events.readonly
的 events_result =service.calendarList().list().execute()
检索日历列表。我认为这可能是您遇到问题的原因。
修改后的脚本:
当您想使用当前脚本检索日历列表时,请将范围修改为https://www.googleapis.com/auth/calendar.readonly
。
当您要检索事件列表时,请按如下方式修改您的脚本。在这种情况下,可以使用https://www.googleapis.com/auth/calendar.events.readonly
的范围。
service = build('calendar', 'v3', credentials=creds)
events_result = service.events().list(calendarId='primary').execute()
events = events_result.get('items', [])
- 请根据您的情况修改日历 ID。
参考文献:
最初,我有以下范围:
SCOPES = ['https://www.googleapis.com/auth/calendar']
使用代码:
credentials = google.oauth2.credentials.Credentials(
**flask.session['credentials'])
service = build('calendar', 'v3', credentials=credentials)
events_result =service.calendarList().list().execute()
events = events_result.get('items', [])
效果很好。但是,因为我不需要访问 write/delete 用户日历 & 以防止用户获取
See, edit, share and permanently delete all the calendars that you can access using Google Calendar
&为了保护他们的安全,我将范围缩小到
SCOPES = ['https://www.googleapis.com/auth/calendar.events.readonly']
使用相同的代码。但是,现在我得到:
googleapiclient.errors.HttpError: <HttpError 403 when requesting https://www.googleapis.com/calendar/v3/users/me/calendarList?alt=json returned "Request had insufficient authentication scopes.". Details: "Request had insufficient authentication scopes.">
尽管 doc 提到您可以执行此类代码来检索具有两个范围的事件。
修改点:
- 当我看到您的脚本和范围时,您正在尝试从范围为
https://www.googleapis.com/auth/calendar.events.readonly
的events_result =service.calendarList().list().execute()
检索日历列表。我认为这可能是您遇到问题的原因。
修改后的脚本:
当您想使用当前脚本检索日历列表时,请将范围修改为https://www.googleapis.com/auth/calendar.readonly
。
当您要检索事件列表时,请按如下方式修改您的脚本。在这种情况下,可以使用https://www.googleapis.com/auth/calendar.events.readonly
的范围。
service = build('calendar', 'v3', credentials=creds)
events_result = service.events().list(calendarId='primary').execute()
events = events_result.get('items', [])
- 请根据您的情况修改日历 ID。