Golang OAuth客户端和刷新令牌

Golang OAuth客户端和刷新令牌,go,oauth-2.0,google-oauth,refresh-token,Go,Oauth 2.0,Google Oauth,Refresh Token,我已经配置了使用OAuth对抗Google。然后我使用访问令牌对gmail api、contacts api、drive api等进行请求。这些需要实际访问令牌的字符串,而不是对象*oauth2.token 当访问令牌有效时,一切工作正常。一旦无效,我就无法访问数据。这很有意义,因为在对服务进行查询之前,我需要使用刷新令牌来获取新的访问令牌 我的理解是,您从OAuth令牌创建的*http.Client将在必要时自动刷新新的访问令牌 然而,我不确定的是如何从客户端获取最新的访问令牌,然后将其作为针

我已经配置了使用OAuth对抗Google。然后我使用访问令牌对gmail api、contacts api、drive api等进行请求。这些需要实际访问令牌的字符串,而不是对象
*oauth2.token

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

我的理解是,您从OAuth令牌创建的
*http.Client
将在必要时自动刷新新的访问令牌

然而,我不确定的是如何从客户端获取最新的访问令牌,然后将其作为针对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
如果客户端处理刷新令牌,那么我需要使用客户端获取访问令牌,使其有效。
你是怎么做到的?我已经研究过如何使用
config.TokenSource(ctx,tok)
,然后我可以在上面调用TokenSource,但这不需要客户端,因此就我所知,令牌不会被刷新。

以下“golang.org/x/oauth2”包中的函数会根据需要自动刷新令牌

func(*oauth2.Config).Client(ctx context.context,t*oauth2.Token)*http.Client


在请求重定向url时,您使用了什么oauth2.AccessType?