Google Calendar API:“您需要对此日历具有作者访问权。”

时间:2019-06-06 18:59:05

标签: ruby-on-rails google-calendar-api

我在Rails 5.2.3应用程序中使用Google Calendar API,并尝试在G Suite域中的Google Calendar上创建事件。我已经能够读取日历和列出事件。尝试插入事件时,出现错误“ requiredAccessLevel:您需要对此日历具有作者访问权。”

因为这是针对内部应用程序的,所以我已经在Google API控制台中注册了一个服务帐户,并已验证该帐户能够读取日历和事件。

在G Suite管理控制台中,我已为范围https://www.googleapis.com/auth/calendarhttps://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:您需要对此日历具有写权限”。而不是插入工作。感谢您的任何建议!

1 个答案:

答案 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