func (c *Client) getAuthToken() (*oauth.AccessToken, error) {
	if c.token != nil {
		return c.token, nil
	}
	var err error
	if c.token, err = c.authoriseWorkflow(); err != nil {
		return nil, errors.Wrap(err, "get OAuth token")
	}
	if err := c.Store.Save(c.token.Token, c.token.Secret); err != nil {
		return nil, errors.Wrap(err, "save OAuth token to store")
	}
	if c.apiClient, err = c.oauthConsumer().MakeHttpClient(c.token); err != nil {
		return nil, errors.Wrap(err, "make HTTP client")
	}
	return c.token, err
}
retrieve OAuth token from disk or Goodreads API
package gr
import (
	"context"
	"net/http"
	"os/exec"
	"time"
	"github.com/deanishe/awgo/util"
	"github.com/mrjones/oauth"
	"github.com/pkg/errors"
)
const (
	authServerURL = "localhost:53233"
	oauthTokenURL     = "https://www.goodreads.com/oauth/request_token"
	oauthAuthoriseURL = "https://www.goodreads.com/oauth/authorize"
	oauthAccessURL    = "https://www.goodreads.com/oauth/access_token"
)