我想测试我的OAuth2客户端,并对TokenURL端点使用模拟.模拟以ACCESS_TOKEN作为响应,但是总是有一个错误为missing access_token
.
我用的是golang.org/x/oauth2
和默认的围棋测试包.
我的模拟服务器:
server := httptest.NewServer(http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
if r.URL.Path == "/token" {
// Mock the token endpoint
json.NewEncoder(w).Encode(struct {
AccessToken string `json:"access_token"`
TokenType string `json:"token_type"`
RefreshToken string `json:"refresh_token"`
Expiry time.Time `json:"expiry"`
}{
AccessToken: "access-token",
TokenType: "Bearer",
RefreshToken: "refresh-token",
Expiry: time.Now().Add(2 * time.Hour),
})
}
}))
defer server.Close()
mockConfig.Endpoint.TokenURL = server.URL + "/token"
示例:我想刷新访问令牌
tokenSource := a.config.TokenSource(ctx, &oauth2.Token{
RefreshToken: session.RefreshToken,
})
刷新令牌时出错:
oauth2: server response missing access_token
我已经判断过/试过了
- 如果提供了Access_Token,则为模拟响应
- OAuth2程序包的代码查看何时发生此错误,但尚未找到任何进一步信息
- 已验证正确的配置参数(oauth2.Config.Endpoint t.TokenURL)
该代码与我的OAuth2提供程序一起运行,因此这只是一个测试问题.
谢谢!