例子:
在下面的代码中
conf
是
*oauth2.Config
.
假设我用代码交换令牌(首次身份验证):
token, err := conf.Exchange(ctx, code)
if err != nil {
log.Fatalln(err)
}
SaveToken(token)
现在我有了我的令牌,我可以用它发出请求。
稍后,在使用令牌之前,如果需要,我让oauth2自动刷新它:
tokenSource := conf.TokenSource(oauth2.NoContext, token)
newToken, err := tokenSource.Token()
if err != nil {
log.Fatalln(err)
}
if newToken.AccessToken != token.AccessToken {
SaveToken(newToken)
log.Println("Saved new token:", newToken.AccessToken)
}
client := oauth2.NewClient(oauth2.NoContext, tokenSource)
resp, err := client.Get(url)