| # OAuth2 for Go |
| |
| [](https://travis-ci.org/golang/oauth2) |
| [](https://godoc.org/golang.org/x/oauth2) |
| |
| oauth2 package contains a client implementation for OAuth 2.0 spec. |
| |
| ## Installation |
| |
| ~~~~ |
| go get golang.org/x/oauth2 |
| ~~~~ |
| |
| Or you can manually git clone the repository to |
| `$(go env GOPATH)/src/golang.org/x/oauth2`. |
| |
| See godoc for further documentation and examples. |
| |
| * [godoc.org/golang.org/x/oauth2](http://godoc.org/golang.org/x/oauth2) |
| * [godoc.org/golang.org/x/oauth2/google](http://godoc.org/golang.org/x/oauth2/google) |
| |
| |
| ## App Engine |
| |
| In change 96e89be (March 2015), we removed the `oauth2.Context2` type in favor |
| of the [`context.Context`](https://golang.org/x/net/context#Context) type from |
| the `golang.org/x/net/context` package |
| |
| This means it's no longer possible to use the "Classic App Engine" |
| `appengine.Context` type with the `oauth2` package. (You're using |
| Classic App Engine if you import the package `"appengine"`.) |
| |
| To work around this, you may use the new `"google.golang.org/appengine"` |
| package. This package has almost the same API as the `"appengine"` package, |
| but it can be fetched with `go get` and used on "Managed VMs" and well as |
| Classic App Engine. |
| |
| See the [new `appengine` package's readme](https://github.com/golang/appengine#updating-a-go-app-engine-app) |
| for information on updating your app. |
| |
| If you don't want to update your entire app to use the new App Engine packages, |
| you may use both sets of packages in parallel, using only the new packages |
| with the `oauth2` package. |
| |
| ```go |
| import ( |
| "golang.org/x/net/context" |
| "golang.org/x/oauth2" |
| "golang.org/x/oauth2/google" |
| newappengine "google.golang.org/appengine" |
| newurlfetch "google.golang.org/appengine/urlfetch" |
| |
| "appengine" |
| ) |
| |
| func handler(w http.ResponseWriter, r *http.Request) { |
| var c appengine.Context = appengine.NewContext(r) |
| c.Infof("Logging a message with the old package") |
| |
| var ctx context.Context = newappengine.NewContext(r) |
| client := &http.Client{ |
| Transport: &oauth2.Transport{ |
| Source: google.AppEngineTokenSource(ctx, "scope"), |
| Base: &newurlfetch.Transport{Context: ctx}, |
| }, |
| } |
| client.Get("...") |
| } |
| ``` |
| |
| ## Report Issues / Send Patches |
| |
| This repository uses Gerrit for code changes. To learn how to submit changes to |
| this repository, see https://golang.org/doc/contribute.html. |
| |
| The main issue tracker for the oauth2 repository is located at |
| https://github.com/golang/oauth2/issues. |