【发布时间】:2016-09-26 14:10:13
【问题描述】:
我已经为 Go 配置了针对 Google 的 OAuth。然后,我使用访问令牌对 gmail api、联系人 api、驱动器 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,但这不需要客户端,因此据我所知,令牌没有刷新。
【问题讨论】:
-
您在请求重定向 url 时使用了什么 oauth2.AccessType ?
标签: go oauth-2.0 google-oauth refresh-token