go - Golang OAuth客户端和刷新 token

标签 go oauth-2.0 google-oauth refresh-token

我已经针对Google用OAuth配置了Go。然后,我使用访问 token 对gmail api,联系人api,驱动器api等进行请求。这些需要使用字符串作为实际访问 token ,而不是对象*oauth2.Token

访问 token 有效时,一切正常。一旦无效,我将无法访问数据。这很有意义,因为在对服务进行查询之前,我需要使用刷新 token 来获取新的访问 token 。

我的理解是,从OAuth token 创建的*http.Client将在需要时自动刷新新的访问 token 。

但是我不确定如何从客户端获取最新的访问 token ,然后将其用作针对Google API的GET请求的一部分以对服务进行身份验证。

总结一下:

//generate client
//get accessToken.AccessToken from client
//do HTTP GET request to get a users image from contact api (or something)
//pass as either a GET parameter, or as a header the access token

如果客户端处理刷新 token ,那么我需要使用客户端来获取访问 token ,以便其有效。
你是怎样做的?我已经研究过使用config.TokenSource(ctx, tok),然后可以在其上调用TokenSource,但这不需要客户端,因此,据我所知, token 没有刷新。

最佳答案

“golang.org/x/oauth2”软件包中的以下函数会根据需要自动刷新 token 。func (*oauth2.Config).Client(ctx context.Context, t *oauth2.Token) *http.Client https://pkg.go.dev/golang.org/x/oauth2#Config.Client

关于go - Golang OAuth客户端和刷新 token ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39705151/

相关文章:

node.js - OAuth 2.0 身份验证和授权

php - MYSQL 的 Google OAuth 2.0 用户 ID 数据类型

pointers - 当值指向另一个实例时,go 的 big.Int 基础值会发生变化

regex - 正则表达式在两组中至少执行一个

java - 如何使用 java 创建 oAuth 请求?

nginx - Kubernetes NGINX 入口 : Disable external auth for specific path

google-api - 范围 https ://www. googleapis.com/auth/calendar.app.created 的 Google Calendar API 请求被拒绝

go - 在 Go 上编译之前如何预检查和设置变量?

go - 如果没有类似 IDE 的特性,我们怎么知道包级变量是在哪里定义的?