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

Sah*_*has 4 go oauth-2.0

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

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

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

小智 8

oauth2包定义了以下变量

var HTTPClient internal.ContextKey
Run Code Online (Sandbox Code Playgroud)

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)
Run Code Online (Sandbox Code Playgroud)