如何在golang / oauth2客户端lib中处理刷新令牌

时间:2015-02-23 22:45:54

标签: go oauth-2.0

使用https://github.com/golang/oauth2的例子很少,但没有一个涵盖刷新令牌的使用。我尝试了很少的方法,但我仍然不满意我的结果。

是否有任何示例代码,或者您可能知道 Github 上的某个项目使用oauth2 lib作为示例?

1 个答案:

答案 0 :(得分:15)

在存储Expiry参数之前,您无需担心刷新令牌。获得“令牌”后#39;对象,将以下内容存储在您的数据库中:

token.AccessTokentoken.RefreshTokentoken.TokenTypetoken.Expiry

在获取时,使用上述参数再次构造令牌对象:

token := new(oauth2.Token)
token.AccessToken = {{ From DataBase }}
token.RefreshToken = {{ From DataBase }}
token.Expiry = {{ From DataBase }}
token.TokenType = {{ From DataBase }}

然后获取您的http客户端:

config.Client(ctx, token)

这将处理刷新令牌。摘录(更多信息:Golang oauth2 client):

  

客户端使用提供的令牌返回HTTP客户端。令牌将根据需要自动刷新。

唯一的缺点是,不会返回刷新的访问令牌。但它的确有效! Google对刷新令牌的使用次数没有限制。