我已经针对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/