【问题标题】:Google Calendar Integration with Google App EngineGoogle 日历与 Google App Engine 的集成
【发布时间】:2020-02-13 01:59:27
【问题描述】:

我在 Google 帐户 A 上设置并运行了 Google App Engine 服务。我想做的是在我公司的 Google 日历帐户 B 上预订活动。我按​​照this 作为一般指南。以下是我为此执行的步骤(注意:AppEngine 已经在运行并且可以正常工作。

  1. 在我的项目中为 Google 帐户 A 启用日历 API
  2. 转到我的帐户 B 的 admin console 并转到安全性 -> 高级设置 -> 管理 API 客户端访问,并将范围 https://www.googleapis.com/auth/calendar 授权给我在帐户 A 中的 App Engine 的服务 ID。
  3. Go 中的以下代码

注意:在getCalendarService 中,我使用ADC 在此repo's README 之后获取凭据

func getCalendarService() (*calendar.Service, error) {
    ctx := context.Background()
    return calendar.NewService(ctx, option.WithScopes(calendar.CalendarScope))
}

// code adapted from https://developers.google.com/calendar/create-events/
func bookEvent() {
    srv, err := getCalendarService()
    if err != nil {logAndPrintError(err)}
    event := &calendar.Event{
        Summary: "Test Title",
        Description: "Lorem ipsum",
        Start: &calendar.EventDateTime{
            DateTime: "2020-02-12T09:00:00-07:00",
            TimeZone: "America/Chicago",
        },
        End: &calendar.EventDateTime{
            DateTime: "2020-02-12T17:00:00-07:00",
            TimeZone: "America/Chicago",
        },
    }
    calendarId := "primary"
    event, err = srv.Events.Insert(calendarId, event).Do()
    if err != nil {
        logAndPrintError(err)
    }
    log.Printf("Event created: %s\n", event.HtmlLink)
}

当我查看日志和错误报告时,没有错误,并且日志显示以下消息:

已创建事件:日历 URL

但是当我复制链接并转到我的 Google 帐户 B 并加载它时,Google 日历显示“找不到请求的活动”。值得一提的是,如果我将 url 加载到 Account A 中,它会说同样的话。

由于某种原因没有错误,但该事件不起作用。我认为这不是我的代码中的问题,而是凭据中的问题,但我可能是错的。


注意:我没有下载任何密钥,我正在使用 ADC 和 App Engine 来获取我的凭据。

【问题讨论】:

    标签: google-app-engine go google-cloud-platform google-calendar-api


    【解决方案1】:

    如果我没记错的话,

    您使用服务帐户创建日历事件并插入此 事件进入服务帐户的主日历

    这可能不是您想要的,相反,如果您想将事件插入到您的主日历中

    • 您需要将此日历的 ID 指定为 calendarId 而不是主要的 - 这意味着您事先与服务帐户共享您的日历
    • 或者,您使用impersonation,即构建服务帐户服务,使其充当您(或指定为ServiceAccountUser 的域的另一个用户)

    【讨论】:

    • 在我的问题中,我说我在设置时遵循了该模拟链接作为指南。我能做些什么不同的事情?感谢您的帮助。
    • 您能否提供您的代码 sn-p,其中包括创建服务(包括模拟)?
    • 您是否编写了与Delegate domain-wide authority 等效但使用您的语言(go)的代码?
    • 我对 App Engine 不是很熟悉,但是看看here。指定您模拟的用户很重要,因为该事件将在该用户的日历中创建。
    • 非常感谢您的帮助。我会尝试你所说的,一旦我开始工作,我会投票并接受。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2012-10-13
    • 1970-01-01
    • 2014-03-12
    • 1970-01-01
    • 1970-01-01
    • 2014-10-11
    • 1970-01-01
    相关资源
    最近更新 更多