在我的 Go 應用程序中,當前作為本地主機在我的開發機器上運行(最終在 Linode 上),我希望簡單地顯示我自己的 Google 帳戶中的日歷中的公共 Google 日歷事件。目前這只顯示到控制臺,因為我想讓它原則上工作并且我在我的應用程序的索引頁面處理程序中有這段代碼。googleCalendar, err := calendar.NewService(r.Context(), option.WithCredentialsFile("./googleAuth.json")) if err != nil { app.errorLog.Println(w, err) } calEvents, err := googleCalendar.Events.List("primary").TimeMin(time.Now().Format(time.RFC3339)).MaxResults(5).Do() if err != nil { app.errorLog.Println(err) } if len(calEvents.Items) > 0 { for _, i := range calEvents.Items { fmt.Fprintln(w, i.Summary, " ", i.Start.DateTime) } } else { app.errorLog.Println("No calendar events to display") }我認為這樣做的唯一方法是使用服務帳戶,因為我不是 G Workspace (GSuite) 用戶(該應用程序最終將在 Linode 上運行),Oauth2 直接是矯枉過正,并且在我的情況下可能無法使用。我在我的 Google Dev Console 中啟用了 Google calendar API 并設置了一個服務帳戶,創建/下載了一個 json 密鑰文件(如代碼中所示)。我已將服務帳戶電子郵件作為共享用戶添加到必要的日歷中。代碼編譯并運行,但我只得到“沒有要顯示的日歷事件”,因為“項目”為空(日歷確實有事件)。還有更多需要做的嗎?如何獲取這些日歷事件?謝謝
1 回答

慕的地6264312
TA貢獻1817條經驗 獲得超6個贊
好吧,我終于找到了解決這個問題的方法。我發布的代碼是在這種情況下所需要的,但它使用的關鍵字“primary”不起作用。我不知道為什么,它應該根據谷歌文檔工作。我只是用實際的日歷 ID(不是日歷名稱)替換了“主要”,并顯示了我的所有事件。??
- 1 回答
- 0 關注
- 76 瀏覽
添加回答
舉報
0/150
提交
取消