我正在使用Golang应用程序,此应用程序连接到Oauth2服务,现在我有刷新令牌,需要使用它获取新的访问令牌,我正在使用golang.org/x/oauth2
,但它不成功,因此我缺少一些东西,目前我有:
refresh_token := "some_refresh_token"
var conf = oauth2.Config{
ClientID:MY_CLIENT,
ClientSecret:MY_CLIENT_SECRET,
Scopes:[]string{"refresh_token"},
RedirectURL:"https://mydomain/callback",
Endpoint: oauth2.Endpoint{
AuthURL:"myoauth2Cluster.com/oauth2/auth",
TokenURL: "myoauth2Cluster.com/oauth2/token",
},
}
t := new (oauth2.Token)
t.RefreshToken=refresh_token
myclient := conf.Client(context.Background(),t)
req, err := http.NewRequest("GET",DontKnowWhichURLhere , nil)
if err != nil {
fmt.Println("error:",err.Error())
}
mrr, er := myclient.Do(req)
if(er!=nil){
fmt.Println(er.Error())
}else{
fmt.Println("status code:",mrr.StatusCode)
}
但我得到了一个404状态,我检查了Oauth2服务器的日志,发现
msg="completed handling request" measure#https://myOauth2Cluster.latency=100648 method=GET remote=xxx.xxx.xx.xxx request="/" status=404 text_status="Not Found" took=100.648µs
另外,我不确定在创建http.NewRequest
时应该建立哪个URL,是回调还是Oauth2服务器的URL?
如果有一些如何使用这个库来更新访问令牌的例子会很好,但目前我还没有找到它
1条答案
按热度按时间6vl6ewon1#
通常,您只需使用旧令牌,它由oauth2库隐式刷新。
conf
是*oauth2.Config
。*假设我正在交换令牌的代码(首次身份验证):
现在我有了令牌,可以使用它来发出请求。
稍后,在使用令牌之前,我让oauth2在需要时自动刷新它: