golang.org/x/oauth2/google库是否支持服务到服务身份验证



我开发了一个Python后端服务,该服务连接到Google Calendar API(v3),检索日历条目并公开它们(它们通过HTTP调用检索)。为了做到这一点,我将OAuth 2.0用于服务器到服务器应用程序。

几年前开发我的应用程序时,谷歌提供的模块还没有移植到Python3,我采用了JWT方式(上面链接的文档中的"HTTP/REST")。

我现在想学习Go,并从移植这个应用程序开始。

Google Calendar API quickstart for Go提供了一个完整的示例,但它假设身份验证将包括来自用户的同意屏幕(3格oAuth)。这与Python示例类似,但也有一个使用服务到服务方法的Python版本。

Go库中是否提供这种服务到服务的身份验证功能

如果不是,我将手动生成JWT(就像我现在用Python版本的代码所做的那样),但由于我刚刚开始使用Go,我更喜欢在动态学习时尽可能多地使用库。

我现在还没有准备好测试它,但我相信这样的东西应该可以工作:

包装主

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%确定这一部分。

最新更新