我开发了一个连接到Google Calendar API(v3)的Python后端服务,检索日历条目并公开它们(通过HTTP调用检索它们)。为此,我使用OAuth 2.0 for Server to Server Applications。
几年前开发我的应用程序时,Google提供的模块尚未移植到Python 3,我采用了JWT方式(" HTTP / REST"在上面链接的文档中)。
我现在想学习Go并开始移植这个应用程序。
Google Calendar API quickstart for Go提供了一个完整的示例,但它假定身份验证将包含来自用户的同意屏幕(3-legged oAuth)。这与Python示例类似,但也有使用服务到服务方法的Python版本。
此服务是否可以在Go库中提供服务身份验证功能?
如果不是,我会手动生成一个JWT(就像我现在用我的代码的Python版本一样)但是因为我刚刚开始使用Go,所以我希望尽可能多地使用库来学习飞。
答案 0 :(得分:0)
我现在不打算对此进行测试,但我相信这样的事情应该有效:
package main
import (
"context"
"io/ioutil"
"log"
"golang.org/x/oauth2/google"
calendar "google.golang.org/api/calendar/v3"
)
func main() {
cred, err := ioutil.ReadFile("service_account.json")
if err != nil {
log.Fatalf("Unable to read JSON credentials config %v", err)
}
conf, err := google.JWTConfigFromJSON(cred, "https://www.googleapis.com/auth/calendar")
if err != nil {
log.Fatalf("Unable to obtain JWT conf %v", err)
}
client := conf.Client(context.Background())
srv, err := calendar.New(client)
if err != nil {
log.Fatalf("Unable to retrieve calendar Client %v", err)
}
...
}
service_account.json
的内容应该以某种方式从服务帐户配置中获取,但我对该部分并不是100%肯定。