我已经为 Go 配置了针对 Google 的 OAuth。然后,我使用访问令牌对 gmail api、联系人 api、驱动器 api 等进行请求。这些需要作为实际访问令牌的字符串,而不是 object *oauth2.Token
。
访问令牌有效时一切正常。一旦它无效,我就无法访问数据。这是有道理的,因为在对服务进行查询之前,我需要使用刷新令牌来获取新的访问令牌。
我的理解是,*http.Client
如果需要,您从 OAuth 令牌创建的将自动刷新新的访问令牌。
但是,我不确定如何从客户端获取最新的访问令牌,然后将其用作GET
针对 Google API 的请求的一部分以验证服务。
所以总结一下:
//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 ,但这不需要客户端,因此据我所知,令牌没有刷新。