Skip to content

Simplifying the oauth2 auth flow for desktop / cli apps that have no server side.

Notifications You must be signed in to change notification settings

nmrshll/oauth2-noserver

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Go Report Card

oauth2-noserver

Simplifying the oauth2 auth flow for desktop / cli apps that have no server side.


While oauth works fine for apps the have a server side, I personally find it a pain to use when developing simple desktop or cli applications.
That's why needed something to turn a complete oauth flow into a one-liner (well, that's clearly exaggerated, but it's barely more).

So here's how it works !

Installation

Run go get -u github.com/nmrshll/oauth2-noserver

Try out the included example with make example

Usage

1. Create an oauth app on the website/service you want to authenticate into

You must set the redirection URL to http://127.0.0.1:14565/oauth/callback for this library to function properly.

bitbucket example

Once done you should get credentials (client id and client secret) to use in your code.

2. From your Go program, authenticate your user like this :

func main() {
	conf := &oauth2.Config{
		ClientID:     "________________",            // also known as client key sometimes
		ClientSecret: "___________________________", // also known as secret key
		Scopes:       []string{"account"},
		Endpoint: oauth2.Endpoint{
			AuthURL:  "https://bitbucket.org/site/oauth2/authorize",
			TokenURL: "https://bitbucket.org/site/oauth2/access_token",
		},
	}

	client, err := oauth2ns.AuthenticateUser(conf)
	if err != nil {
		log.Fatal(err)
	}

	// use client.Get / client.Post for further requests, the token will automatically be there
	_, _ = client.Get("/auth-protected-path")
}

The AuthURL and TokenURL can be found in the service's oauth documentation.

Contributing

Have improvement ideas or want to help ? Please start by opening an issue

Related

Used in:

License: MIT

About

Simplifying the oauth2 auth flow for desktop / cli apps that have no server side.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published