如何将自定义客户端传递给Golang oauth2.Exchange

时间:2016-07-01 17:21:26

标签: go oauth2

https://godoc.org/golang.org/x/oauth2#Config.Exchange的oauth2.Exchange文档说:

  

要使用的HTTP客户端派生自上下文。如果未通过上下文提供客户端,则使用http.DefaultClient。

现在我用自己的设置创建了一个http.Client。如何使用oauth2.Exchange函数来使用它?

1 个答案:

答案 0 :(得分:3)

oauth2包定义了the following variable

var HTTPClient internal.ContextKey
     

HTTPClient是与golang.org/x/net/context的WithValue函数一起使用的上下文密钥,用于将* http.Client值与上下文相关联。

在构造要传递给Exchange的上下文时,使用上面的变量作为上下文键:

client := &http.Client{
    // TODO
}
parent := oauth2.NoContext()
ctx := context.WithValue(parent, oauth2.HTTPClient, client)
tkn, err := c.Exchange(ctx, code)