当前位置: 首页 > 知识库问答 >
问题:

Google日历API:“您需要具有此日历的写入程序访问权限。”

宿建本
2023-03-14

我正在Rails 5.2.3应用程序中使用Google日历API,并试图在我的G套件域中的Google日历上创建事件。我已经能够阅读日历和列出事件。当我尝试插入事件时,会出现错误“requiredAccessLevel:您需要具有此日历的writer访问权限。”

由于这是一个内部应用程序,我在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_applicathtml" target="_blank">ion_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个答案

楚乐逸
2023-03-14

感谢克洛伊在上面的评论。解决方案是将前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
 类似资料:
  • 我是新手,但我想将google API与PHP结合使用,但它不起作用。我已经创建了

  • 我正在尝试使用谷歌API的v3从客户的公共日历中获取事件列表。我在API Explorer中输入了日历ID,得到了一个肯定的结果: 为了创建 API 密钥,我在 Google 开发者控制台中创建了一个项目,并创建了一个公共 API 访问密钥 (API 我看到的所有回复都表明,您需要确保Google Calendar API已打开,而且它确实已打开(默认情况下也是打开的)。我在这里错过了什么?

  • 我希望我的应用在用户的 Google 日历上添加/删除/更新事件。应用只需删除和更新应用本身已添加的事件。 我是否正确地理解了这一点,为了使其正常工作,用户必须向应用程序授予对其Google日历的完全访问权限,这意味着该应用程序可能会读取和删除任何日历上的私人事件? 或者,有没有办法限制用户对应用程序的访问权限,例如,允许应用程序创建单个日历,只允许它访问该日历上的事件? 我已经通读了相关的谷歌日

  • 我想做的是:使用javascript将事件添加到我的网站上的谷歌日历中。 我不能做什么:为谷歌日历API找到一个好的教程/演练/示例。我能够找到v1和v2 api之间来回链接的所有文档,或者v3 api似乎不是基于客户端的。 对于那些好奇的人,我正在开发这个网站:http://infohost.nmt.edu/~bbean/banweb/index.php

  • 我试图使用VBScript和Oauth脱机访问谷歌日历API。我设法获得了一个刷新令牌和一个访问令牌,现在我想进入实际使用API的步骤,使用以下代码: 我得到的回应是: 即使访问令牌是有效的--如果我将sURL更改为https://www.googleapis.com/oauth2/v1/tokeninfo并运行该脚本,我将得到以下响应,显示一个有效的令牌: 如果我粘贴URL https://ww

  • 我想从我的Ruby应用程序中访问Calendar rest API。我已经创建了azure多租户应用程序,并对其进行了配置。 我尝试获取对资源“https://outlook.office365com/”的访问令牌,但出现错误 我找不到这个错误的任何描述,也不明白为什么它被禁用 以下是我的azure应用程序权限: