gpt4 book ai didi

docker - 无法从 Docker 容器内的 Google API 交换 AccessToken

转载 作者:IT王子 更新时间:2023-10-29 01:38:01 25 4
gpt4 key购买 nike

我有一个用 Go 编写的网络应用程序,使用 oauth2(包 golang.org/x/oauth2)让用户通过 Google 登录(遵循本教程 https://developers.google.com/identity/sign-in/web/server-side-flow)。

当我在本地测试应用程序时,它工作正常但是当我部署应用程序并在 Docker 容器中运行时(基于 alpine:latest,运行二进制文件),它有一个错误:发布 https://accounts.google.com/o/oauth2/token: x509: 证书由未知授权机构签署

这是我交换accessToken的代码:

ctx = context.Background()

config := &oauth2.Config{
ClientID: config.GoogleClientId,
ClientSecret: config.GoogleClientSecret,
RedirectURL: config.GoogleLoginRedirectUrl,
Endpoint: google.Endpoint,
Scopes: []string{"email", "profile"},
}

accessToken, err := config.Exchange(ctx, req.Code)
if err != nil {
log.Println(err.Error()) // Error here
}

最佳答案

问题不是Go引起的,而是Alpine镜像引起的。

默认的 Alpine 图像没有证书,因此应用无法调用 https 地址(本例为 https://accounts.google.com/o/oauth2/token)。

要解决此问题,请安装 2 个软件包 opensslca-certificates。 Dockerfile 中的示例:

apk add --no-cache ca-certificates openssl

关于docker - 无法从 Docker 容器内的 Google API 交换 AccessToken,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52341878/

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