Skip to content

cristalhq/oauth2

Folders and files

NameName
Last commit message
Last commit date
Mar 5, 2024
Apr 24, 2022
Oct 2, 2019
Nov 10, 2022
Nov 10, 2022
Nov 29, 2023
Nov 29, 2023
Nov 10, 2022
Nov 29, 2023
Nov 29, 2023
Nov 10, 2022
Nov 29, 2023
Nov 29, 2023
Nov 10, 2022
Nov 29, 2023

Repository files navigation

oauth2

build-img pkg-img reportcard-img coverage-img version-img

OAuth2 client for Go.

Features

  • Simple API.
  • Tiny codebase.
  • Dependency-free.

See GUIDE.md for more details.

Install

Go version 1.17

go get github.com/cristalhq/oauth2

Example

config := oauth2.Config{
    ClientID:     "YOUR_CLIENT_ID",
    ClientSecret: "YOUR_CLIENT_SECRET",
    AuthURL:      "https://provider.com/o/oauth2/auth",
    TokenURL:     "https://provider.com/o/oauth2/token",
    Scopes:       []string{"email", "avatar"},
}

// create a client
client := oauth2.NewClient(http.DefaultClient, config)

// url to fetch the code
url := client.AuthCodeURL("state")
fmt.Printf("Visit the URL with the auth dialog: %v", url)

// Use the authorization code that is pushed to the redirect URL.
// Exchange will do the handshake to retrieve the initial access token.
var code string
if _, err := fmt.Scan(&code); err != nil {
    panic(err)
}

// get a token
token, err := client.Exchange(context.Background(), code)
if err != nil {
    panic(err)
}

var _ string = token.AccessToken  // OAuth2 token
var _ string = token.TokenType    // type of the token
var _ string = token.RefreshToken // token for a refresh
var _ time.Time = token.Expiry    // token expiration time
var _ bool = token.IsExpired()    // have token expired?

Also see examples: example_test.go.

Documentation

See these docs.

License

MIT License.