forked from Mirrors/oauth2
oauth2: add examples for basic/custom HTTP client
- provides a bare and custom context example demonstrating that http client attributes are not always passed along. - adds clarifying note to the oauth2.go NewClient godoc. - trim down example_test Change-Id: Iad6697eed83429c36b9ba0efc43293f4910938fb Reviewed-on: https://go-review.googlesource.com/36553 Run-TryBot: Ian Lance Taylor <iant@golang.org> Reviewed-by: JBD <jbd@google.com>
This commit is contained in:
parent
9a379c6b3e
commit
3d1522b268
|
@ -48,7 +48,7 @@ func ExampleConfig() {
|
||||||
client.Get("...")
|
client.Get("...")
|
||||||
}
|
}
|
||||||
|
|
||||||
func ExampleHTTPClient() {
|
func ExampleCustomHTTP() {
|
||||||
hc := &http.Client{Timeout: 2 * time.Second}
|
hc := &http.Client{Timeout: 2 * time.Second}
|
||||||
ctx := context.WithValue(context.Background(), oauth2.HTTPClient, hc)
|
ctx := context.WithValue(context.Background(), oauth2.HTTPClient, hc)
|
||||||
|
|
||||||
|
@ -57,15 +57,24 @@ func ExampleHTTPClient() {
|
||||||
ClientSecret: "YOUR_CLIENT_SECRET",
|
ClientSecret: "YOUR_CLIENT_SECRET",
|
||||||
Scopes: []string{"SCOPE1", "SCOPE2"},
|
Scopes: []string{"SCOPE1", "SCOPE2"},
|
||||||
Endpoint: oauth2.Endpoint{
|
Endpoint: oauth2.Endpoint{
|
||||||
AuthURL: "https://provider.com/o/oauth2/auth",
|
|
||||||
TokenURL: "https://provider.com/o/oauth2/token",
|
TokenURL: "https://provider.com/o/oauth2/token",
|
||||||
|
AuthURL: "https://provider.com/o/oauth2/auth",
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
// Exchange request will be made by the custom
|
tokenSource, err := conf.PasswordCredentialsToken(ctx, "YOUR_USERNAME", "YOUR_PASSWORD")
|
||||||
// HTTP client, hc.
|
|
||||||
_, err := conf.Exchange(ctx, "foo")
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
log.Fatal(err)
|
log.Fatal(err)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// The returned client does not reuse
|
||||||
|
// properties from the hc HTTP Client.
|
||||||
|
client := oauth2.NewClient(ctx, tokenSource)
|
||||||
|
|
||||||
|
resp, err := client.Get("http://www.example.com")
|
||||||
|
if err != nil {
|
||||||
|
log.Fatal(err)
|
||||||
|
}
|
||||||
|
|
||||||
|
_ = resp // use the response
|
||||||
}
|
}
|
||||||
|
|
|
@ -291,6 +291,10 @@ var HTTPClient internal.ContextKey
|
||||||
// NewClient creates an *http.Client from a Context and TokenSource.
|
// NewClient creates an *http.Client from a Context and TokenSource.
|
||||||
// The returned client is not valid beyond the lifetime of the context.
|
// The returned client is not valid beyond the lifetime of the context.
|
||||||
//
|
//
|
||||||
|
// Note that if a custom *http.Client is provided via the Context it
|
||||||
|
// is used only for token acquisition and is not used to configure the
|
||||||
|
// *http.Client returned from NewClient.
|
||||||
|
//
|
||||||
// As a special case, if src is nil, a non-OAuth2 client is returned
|
// As a special case, if src is nil, a non-OAuth2 client is returned
|
||||||
// using the provided context. This exists to support related OAuth2
|
// using the provided context. This exists to support related OAuth2
|
||||||
// packages.
|
// packages.
|
||||||
|
|
Loading…
Reference in New Issue