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 !
Run go get -u github.com/nmrshll/oauth2-noserver
Try out the included example with make example
You must set the redirection URL to http://127.0.0.1:14565/oauth/callback
for this library to function properly.
Once done you should get credentials (client id
and client secret
) to use in your code.
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.
Have improvement ideas or want to help ? Please start by opening an issue
Used in: