我在Rails 5.2.3应用程序中使用Google Calendar API,并尝试在G Suite域中的Google Calendar上创建事件。我已经能够读取日历和列出事件。尝试插入事件时,出现错误“ requiredAccessLevel:您需要对此日历具有作者访问权。”
因为这是针对内部应用程序的,所以我已经在Google API控制台中注册了一个服务帐户,并已验证该帐户能够读取日历和事件。
在G Suite管理控制台中,我已为范围https://www.googleapis.com/auth/calendar和https://www.googleapis.com/auth/calendar.events的服务帐户授予了权限
我在自己的帐户下创建了日历,并添加了具有“对事件进行更改”权限的服务帐户
这是我正在运行的代码的示例。
calendar_id = '12345' #obviously not but I've verified that I have the right calendar.
scopes = ['https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/calendar.events']
authorization = Google::Auth.get_application_default(scopes)
client = Google::Apis::CalendarV3::CalendarService.new
client.authorization = authorization
start_time = Time.current
end_time = Time.current + 2.hours
newEvent = Google::Apis::CalendarV3::Event.new({
summary: "Sample Event",
start: {
date_time: start_time.rfc3339,
time_zone: start_time.strftime("%Z")
},
end: {
date_time: end_time.rfc3339
time_zone: end_time.strftime("%Z")
}
})
result = client.insert_event(calendar_id, newEvent)
我确定我在某个地方错过了写访问权限,但是还没有弄清楚为什么我会得到“ requiredAccessLevel:您需要对此日历具有写权限”。而不是插入工作。感谢您的任何建议!
答案 0 :(得分:0)
在上面的评论中感谢Chloe。解决方法是将前5行更改为
scopes = ['https://www.googleapis.com/auth/calendar', 'https://www.googleapis.com/auth/calendar.events']
authorization = Google::Auth.get_application_default(scopes)
auth_client = authorization.dup
auth_client.sub = 'account@mydomain.com'
auth_client.fetch_access_token!
client = Google::Apis::CalendarV3::CalendarService.new
client.authorization = auth_client