gpt4 book ai didi

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

转载 作者:IT王子 更新时间:2023-10-29 02:21:31 26 4
gpt4 key购买 nike

我开发了一个连接到 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提供了一个完整的示例,但它假定身份验证将包括来自用户的同意屏幕(三足 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% 确定那部分。

关于go - golang.org/x/oauth2/google 库是否支持服务到服务身份验证?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47138186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com